warscript 0.0.1-dev.a58cc52 → 0.0.1-dev.a73c979

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 (54) hide show
  1. package/attributes.d.ts +5 -0
  2. package/attributes.lua +8 -1
  3. package/core/types/timer.d.ts +1 -1
  4. package/engine/behavior.d.ts +2 -0
  5. package/engine/behavior.lua +53 -27
  6. package/engine/behaviour/ability/apply-buff.lua +1 -1
  7. package/engine/behaviour/ability/damage.d.ts +4 -2
  8. package/engine/behaviour/ability/damage.lua +24 -36
  9. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  10. package/engine/behaviour/ability/emulate-impact.lua +11 -3
  11. package/engine/behaviour/ability.lua +8 -17
  12. package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
  13. package/engine/behaviour/unit/stun-immunity.lua +43 -27
  14. package/engine/behaviour/unit.d.ts +26 -0
  15. package/engine/behaviour/unit.lua +163 -4
  16. package/engine/buff.d.ts +2 -1
  17. package/engine/buff.lua +9 -3
  18. package/engine/internal/ability.d.ts +4 -0
  19. package/engine/internal/ability.lua +23 -0
  20. package/engine/internal/item/ability.lua +63 -11
  21. package/engine/internal/item.d.ts +3 -1
  22. package/engine/internal/item.lua +75 -3
  23. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  24. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  25. package/engine/internal/unit/ability.d.ts +35 -0
  26. package/engine/internal/unit/ability.lua +62 -0
  27. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  28. package/engine/internal/unit/allowed-targets.lua +9 -1
  29. package/engine/internal/unit/order.d.ts +20 -0
  30. package/engine/internal/unit/order.lua +136 -0
  31. package/engine/internal/unit+damage.d.ts +1 -1
  32. package/engine/internal/unit+damage.lua +6 -1
  33. package/engine/internal/unit-missile-launch.lua +1 -1
  34. package/engine/internal/unit.d.ts +14 -3
  35. package/engine/internal/unit.lua +193 -90
  36. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  37. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  38. package/engine/object-field/unit.d.ts +11 -0
  39. package/engine/object-field/unit.lua +34 -0
  40. package/engine/object-field.d.ts +6 -3
  41. package/engine/object-field.lua +85 -73
  42. package/engine/standard/fields/unit.d.ts +4 -0
  43. package/engine/standard/fields/unit.lua +7 -0
  44. package/engine/text-tag.d.ts +36 -2
  45. package/engine/text-tag.lua +175 -10
  46. package/engine/unit.d.ts +1 -0
  47. package/engine/unit.lua +1 -0
  48. package/package.json +2 -2
  49. package/utility/functions.d.ts +5 -0
  50. package/utility/functions.lua +5 -0
  51. package/utility/lua-maps.d.ts +1 -0
  52. package/utility/lua-maps.lua +4 -0
  53. package/core/types/order.d.ts +0 -25
  54. package/core/types/order.lua +0 -55
@@ -131,6 +131,41 @@ declare module "../unit" {
131
131
  const abilityNoTargetChannelingStartEvent: DispatchingEvent<[Unit, Ability]>;
132
132
  }
133
133
  }
134
+ declare module "../unit" {
135
+ namespace Unit {
136
+ const abilityImpactEvent: DispatchingEvent<[Unit, Ability]>;
137
+ }
138
+ }
139
+ declare module "../unit" {
140
+ namespace Unit {
141
+ const abilityWidgetTargetImpactEvent: DispatchingEvent<[Unit, Ability, Widget]>;
142
+ }
143
+ }
144
+ declare module "../unit" {
145
+ namespace Unit {
146
+ const abilityUnitTargetImpactEvent: DispatchingEvent<[Unit, Ability, Unit]>;
147
+ }
148
+ }
149
+ declare module "../unit" {
150
+ namespace Unit {
151
+ const abilityItemTargetImpactEvent: DispatchingEvent<[Unit, Ability, Item]>;
152
+ }
153
+ }
154
+ declare module "../unit" {
155
+ namespace Unit {
156
+ const abilityDestructibleTargetImpactEvent: DispatchingEvent<[Unit, Ability, Destructable]>;
157
+ }
158
+ }
159
+ declare module "../unit" {
160
+ namespace Unit {
161
+ const abilityPointTargetImpactEvent: DispatchingEvent<[Unit, Ability, number, number]>;
162
+ }
163
+ }
164
+ declare module "../unit" {
165
+ namespace Unit {
166
+ const abilityNoTargetImpactEvent: DispatchingEvent<[Unit, Ability]>;
167
+ }
168
+ }
134
169
  declare module "../unit" {
135
170
  namespace Unit {
136
171
  const abilityChannelingFinishEvent: DispatchingEvent<[Unit, Ability]>;
@@ -21,6 +21,8 @@ local ____preconditions = require("utility.preconditions")
21
21
  local checkNotNull = ____preconditions.checkNotNull
22
22
  local ____lazy = require("utility.lazy")
23
23
  local lazyRecord = ____lazy.lazyRecord
24
+ local ____timer = require("core.types.timer")
25
+ local Timer = ____timer.Timer
24
26
  local eventInvoke = Event.invoke
25
27
  local condition = Condition
26
28
  local createTrigger = CreateTrigger
@@ -345,6 +347,66 @@ rawset(
345
347
  extractAbilityTypeId
346
348
  )
347
349
  )
350
+ local internalAbilityImpactEvent = __TS__New(Event)
351
+ internalAbilityChannelingStartEvent:addListener(function(...)
352
+ Timer:run(eventInvoke, internalAbilityImpactEvent, ...)
353
+ end)
354
+ rawset(
355
+ Unit,
356
+ "abilityImpactEvent",
357
+ createDispatchingEvent(
358
+ createCommonEvent(internalAbilityImpactEvent),
359
+ extractAbilityTypeId
360
+ )
361
+ )
362
+ rawset(
363
+ Unit,
364
+ "abilityWidgetTargetImpactEvent",
365
+ createDispatchingEvent(
366
+ createWidgetTargetEvent(internalAbilityImpactEvent),
367
+ extractAbilityTypeId
368
+ )
369
+ )
370
+ rawset(
371
+ Unit,
372
+ "abilityUnitTargetImpactEvent",
373
+ createDispatchingEvent(
374
+ createUnitTargetEvent(internalAbilityImpactEvent),
375
+ extractAbilityTypeId
376
+ )
377
+ )
378
+ rawset(
379
+ Unit,
380
+ "abilityItemTargetImpactEvent",
381
+ createDispatchingEvent(
382
+ createItemTargetEvent(internalAbilityImpactEvent),
383
+ extractAbilityTypeId
384
+ )
385
+ )
386
+ rawset(
387
+ Unit,
388
+ "abilityDestructibleTargetImpactEvent",
389
+ createDispatchingEvent(
390
+ createDestructibleTargetEvent(internalAbilityImpactEvent),
391
+ extractAbilityTypeId
392
+ )
393
+ )
394
+ rawset(
395
+ Unit,
396
+ "abilityPointTargetImpactEvent",
397
+ createDispatchingEvent(
398
+ createPointTargetEvent(internalAbilityImpactEvent),
399
+ extractAbilityTypeId
400
+ )
401
+ )
402
+ rawset(
403
+ Unit,
404
+ "abilityNoTargetImpactEvent",
405
+ createDispatchingEvent(
406
+ createNoTargetEvent(internalAbilityImpactEvent),
407
+ extractAbilityTypeId
408
+ )
409
+ )
348
410
  rawset(
349
411
  Unit,
350
412
  "abilityChannelingFinishEvent",
@@ -2,7 +2,7 @@
2
2
  import { CombatClassifications } from "../../object-data/auxiliary/combat-classification";
3
3
  declare module "../unit" {
4
4
  interface Unit {
5
- isAllowedTarget(this: Unit, source: Unit, allowedTargetCombatClassifications: CombatClassifications): boolean;
5
+ isAllowedTarget(this: Unit, source: Unit, allowedTargetCombatClassifications?: CombatClassifications): boolean;
6
6
  }
7
7
  }
8
8
  declare module "../unit" {
@@ -5,7 +5,15 @@ local initializeFilterTargetState = ____combat_2Dclassification.initializeFilter
5
5
  local ____unit = require("engine.internal.unit")
6
6
  local Unit = ____unit.Unit
7
7
  Unit.prototype.isAllowedTarget = function(self, source, allowedTargetCombatClassifications)
8
- initializeFilterTargetState(source, allowedTargetCombatClassifications)
8
+ if allowedTargetCombatClassifications ~= nil then
9
+ initializeFilterTargetState(source, allowedTargetCombatClassifications)
10
+ return filterTarget(self)
11
+ end
12
+ initializeFilterTargetState(source, source.firstWeapon.allowedTargetCombatClassifications)
13
+ if filterTarget(self) then
14
+ return true
15
+ end
16
+ initializeFilterTargetState(source, source.secondWeapon.allowedTargetCombatClassifications)
9
17
  return filterTarget(self)
10
18
  end
11
19
  Unit.getAllowedTargetsInRange = function(source, allowedTargetCombatClassifications, x, y, range)
@@ -0,0 +1,20 @@
1
+ /** @noSelfInFile */
2
+ import { Widget } from "../../../core/types/widget";
3
+ export declare const enum OrderType {
4
+ IMMEDIATE = 0,
5
+ POINT = 1,
6
+ TARGET = 2
7
+ }
8
+ declare module "../unit" {
9
+ interface Unit {
10
+ readonly currentOrderType: OrderType;
11
+ readonly currentOrderId: number;
12
+ readonly currentOrderStartTime: number;
13
+ readonly currentOrderStartX: number;
14
+ readonly currentOrderStartY: number;
15
+ readonly currentOrderTargetX: number;
16
+ readonly currentOrderTargetY: number;
17
+ readonly currentOrderTarget?: Widget;
18
+ issueOrder(...order: [orderType: OrderType.IMMEDIATE, orderId: number] | [orderType: OrderType.POINT, orderId: number, x: number, y: number] | [orderType: OrderType.TARGET, orderId: number, target: Widget]): boolean;
19
+ }
20
+ }
@@ -0,0 +1,136 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
3
+ local ____exports = {}
4
+ local ____attributes = require("attributes")
5
+ local attribute = ____attributes.attribute
6
+ local ____unit = require("engine.internal.unit")
7
+ local Unit = ____unit.Unit
8
+ local ____game = require("core.game")
9
+ local elapsedTime = ____game.elapsedTime
10
+ local getUnitCurrentOrder = GetUnitCurrentOrder
11
+ local issueImmediateOrderById = IssueImmediateOrderById
12
+ local issuePointOrderById = IssuePointOrderById
13
+ local issueTargetOrderById = IssueTargetOrderById
14
+ local unitLastOrderTypeAttribute = attribute()
15
+ local unitLastOrderIdAttribute = attribute()
16
+ local unitLastOrderStartTimeAttribute = attribute()
17
+ local unitLastOrderStartXAttribute = attribute()
18
+ local unitLastOrderStartYAttribute = attribute()
19
+ local unitLastOrderTargetXAttribute = attribute()
20
+ local unitLastOrderTargetYAttribute = attribute()
21
+ local unitLastOrderTargetAttribute = attribute()
22
+ Unit.onImmediateOrder:addListener(
23
+ 4,
24
+ function(unit, orderId)
25
+ unit[unitLastOrderTypeAttribute] = 0
26
+ unit[unitLastOrderIdAttribute] = orderId
27
+ unit[unitLastOrderStartTimeAttribute] = elapsedTime()
28
+ unit[unitLastOrderStartXAttribute] = unit.x
29
+ unit[unitLastOrderStartYAttribute] = unit.y
30
+ unit[unitLastOrderTargetXAttribute] = nil
31
+ unit[unitLastOrderTargetYAttribute] = nil
32
+ unit[unitLastOrderTargetAttribute] = nil
33
+ end
34
+ )
35
+ Unit.onPointOrder:addListener(
36
+ 4,
37
+ function(unit, orderId, x, y)
38
+ unit[unitLastOrderTypeAttribute] = 1
39
+ unit[unitLastOrderIdAttribute] = orderId
40
+ unit[unitLastOrderStartTimeAttribute] = elapsedTime()
41
+ unit[unitLastOrderStartXAttribute] = unit.x
42
+ unit[unitLastOrderStartYAttribute] = unit.y
43
+ unit[unitLastOrderTargetXAttribute] = x
44
+ unit[unitLastOrderTargetYAttribute] = y
45
+ unit[unitLastOrderTargetAttribute] = nil
46
+ end
47
+ )
48
+ Unit.onTargetOrder:addListener(
49
+ 4,
50
+ function(unit, orderId, target)
51
+ unit[unitLastOrderTypeAttribute] = 2
52
+ unit[unitLastOrderIdAttribute] = orderId
53
+ unit[unitLastOrderStartTimeAttribute] = elapsedTime()
54
+ unit[unitLastOrderStartXAttribute] = unit.x
55
+ unit[unitLastOrderStartYAttribute] = unit.y
56
+ unit[unitLastOrderTargetXAttribute] = target.x
57
+ unit[unitLastOrderTargetYAttribute] = target.y
58
+ unit[unitLastOrderTargetAttribute] = target
59
+ end
60
+ )
61
+ local function toUndefinedIfCurrentOrderDoesNotMatchLast(unit, value)
62
+ local currentOrderId = getUnitCurrentOrder(unit.handle)
63
+ local lastOrderId = unit[unitLastOrderIdAttribute]
64
+ local ____temp_0
65
+ if currentOrderId == lastOrderId or currentOrderId == orderId("patrolAI") and lastOrderId == orderId("patrol") then
66
+ ____temp_0 = value
67
+ else
68
+ ____temp_0 = nil
69
+ end
70
+ return ____temp_0
71
+ end
72
+ __TS__ObjectDefineProperty(
73
+ Unit.prototype,
74
+ "currentOrderType",
75
+ {get = function(self)
76
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderTypeAttribute]) or 0
77
+ end}
78
+ )
79
+ __TS__ObjectDefineProperty(
80
+ Unit.prototype,
81
+ "currentOrderId",
82
+ {get = function(self)
83
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderIdAttribute]) or 0
84
+ end}
85
+ )
86
+ __TS__ObjectDefineProperty(
87
+ Unit.prototype,
88
+ "currentOrderStartTime",
89
+ {get = function(self)
90
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderStartTimeAttribute]) or 0
91
+ end}
92
+ )
93
+ __TS__ObjectDefineProperty(
94
+ Unit.prototype,
95
+ "currentOrderStartX",
96
+ {get = function(self)
97
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderStartXAttribute]) or 0
98
+ end}
99
+ )
100
+ __TS__ObjectDefineProperty(
101
+ Unit.prototype,
102
+ "currentOrderStartY",
103
+ {get = function(self)
104
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderStartYAttribute]) or 0
105
+ end}
106
+ )
107
+ __TS__ObjectDefineProperty(
108
+ Unit.prototype,
109
+ "currentOrderTargetX",
110
+ {get = function(self)
111
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderTargetXAttribute]) or 0
112
+ end}
113
+ )
114
+ __TS__ObjectDefineProperty(
115
+ Unit.prototype,
116
+ "currentOrderTargetY",
117
+ {get = function(self)
118
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderTargetYAttribute]) or 0
119
+ end}
120
+ )
121
+ __TS__ObjectDefineProperty(
122
+ Unit.prototype,
123
+ "currentOrderTarget",
124
+ {get = function(self)
125
+ return toUndefinedIfCurrentOrderDoesNotMatchLast(self, self[unitLastOrderTargetAttribute])
126
+ end}
127
+ )
128
+ local issueOrderByType = {
129
+ [0] = issueImmediateOrderById,
130
+ [1] = issuePointOrderById,
131
+ [2] = function(unitHandle, orderId, widget) return issueTargetOrderById(unitHandle, orderId, widget.handle) end
132
+ }
133
+ Unit.prototype.issueOrder = function(self, orderType, orderId, xOrTarget, y)
134
+ return issueOrderByType[orderType](self.handle, orderId, xOrTarget, y)
135
+ end
136
+ return ____exports
@@ -55,6 +55,6 @@ export declare namespace WeaponType {
55
55
  }
56
56
  declare module "./unit" {
57
57
  interface Unit {
58
- damageTarget(target: Widget, amount: number, attack?: boolean, ranged?: boolean, attackType?: AttackType, damageType?: DamageType, weaponType?: WeaponType): boolean;
58
+ damageTarget(target: Widget, amount: number, attack?: boolean, ranged?: boolean, attackType?: AttackType, damageType?: DamageType, weaponType?: WeaponType, metadata?: unknown): boolean;
59
59
  }
60
60
  }
@@ -9,6 +9,8 @@ local ____dummy = require("objutil.dummy")
9
9
  local dummyUnitId = ____dummy.dummyUnitId
10
10
  local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
11
11
  local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
12
+ local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
13
+ local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
12
14
  local createUnit = CreateUnit
13
15
  local getOwningPlayer = GetOwningPlayer
14
16
  local showUnit = ShowUnit
@@ -79,7 +81,7 @@ for ____, player in ipairs(Player.all) do
79
81
  showUnit(dummy, false)
80
82
  dummies[player] = dummy
81
83
  end
82
- Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, attackType, damageType, weaponType)
84
+ Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, attackType, damageType, weaponType, metadata)
83
85
  if attack == nil then
84
86
  attack = false
85
87
  end
@@ -100,6 +102,9 @@ Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, att
100
102
  if not getOwningPlayer(handle) then
101
103
  handle = dummies[__TS__InstanceOf(target, Unit) and target.owner or (self._owner or Player.neutralAggressive)]
102
104
  end
105
+ if __TS__InstanceOf(target, Unit) then
106
+ damageMetadataByTarget[target] = metadata
107
+ end
103
108
  return unitDamageTarget(
104
109
  handle,
105
110
  targetHandle,
@@ -44,7 +44,7 @@ local function timerCallback(source, target)
44
44
  Event.invoke(autoAttackFinishEvent, source, target)
45
45
  end
46
46
  Unit.autoAttackStartEvent:addListener(function(source, target)
47
- local attackPoint = source.weapons[1].impactDelay
47
+ local attackPoint = (source:chooseWeapon(target) or source.firstWeapon).impactDelay
48
48
  local timer = Timer:simple(attackPoint, timerCallback, source, target)
49
49
  eventTimerByUnit[source] = timer
50
50
  end)
@@ -14,6 +14,7 @@ import { CombatClassification, CombatClassifications } from "../object-data/auxi
14
14
  import { MovementType } from "../object-data/auxiliary/movement-type";
15
15
  import { UnitAttribute } from "../object-data/auxiliary/unit-attribute";
16
16
  import { AttackType } from "../object-data/auxiliary/attack-type";
17
+ import { AttributesHolder } from "../../attributes";
17
18
  export type UnitClassification = junittype;
18
19
  export declare namespace UnitClassification {
19
20
  const STRUCTURE: junittype;
@@ -22,6 +23,7 @@ export declare namespace UnitClassification {
22
23
  const GROUND: junittype;
23
24
  const SUMMONED: junittype;
24
25
  const MECHANICAL: junittype;
26
+ const WORKER: junittype;
25
27
  const ANCIENT: junittype;
26
28
  const SUICIDAL: junittype;
27
29
  const TAUREN: junittype;
@@ -39,15 +41,18 @@ type AbilityDispatcherTable<T extends any[] = []> = {
39
41
  readonly [id: number]: Event<[Unit, Ability, ...T]>;
40
42
  };
41
43
  type AbilityEventDispatcher<T extends any[] = []> = Event<[Unit, Ability, ...T]> & AbilityDispatcherTable<T>;
42
- export interface DamagingEvent {
44
+ export interface DamagingEvent extends AttributesHolder {
43
45
  amount: number;
44
46
  attackType: AttackType;
45
47
  damageType: jdamagetype;
46
48
  weaponType: jweapontype;
49
+ metadata: unknown;
47
50
  readonly isAttack: boolean;
48
51
  readonly originalAmount: number;
52
+ readonly originalMetadata: unknown;
53
+ preventRetaliation(this: DamagingEvent): void;
49
54
  }
50
- export type DamageEvent = DamagingEvent & {
55
+ export type DamageEvent = Omit<DamagingEvent, "preventRetaliation"> & {
51
56
  preventDeath<P extends any[]>(this: DamageEvent, callback: (this: void, ...parameters: P) => any, ...parameters: P): void;
52
57
  };
53
58
  export type AttackDamageEvent = DamagingEvent & {
@@ -79,6 +84,8 @@ export declare class UnitWeapon {
79
84
  set cooldown(cooldown: number);
80
85
  get damage(): [minimumDamage: number, maximumDamage: number];
81
86
  set damage([minimumDamage, maximumDamage]: [number, number]);
87
+ get allowedTargetCombatClassifications(): CombatClassifications;
88
+ set allowedTargetCombatClassifications(allowedTargetCombatClassifications: CombatClassifications);
82
89
  get damageBase(): number;
83
90
  set damageBase(damageBase: number);
84
91
  get damageDiceCount(): number;
@@ -160,6 +167,7 @@ export declare class Unit extends Handle<junit> {
160
167
  get weapons(): [UnitWeapon, UnitWeapon];
161
168
  get firstWeapon(): UnitWeapon;
162
169
  get secondWeapon(): UnitWeapon;
170
+ chooseWeapon(target: Unit): UnitWeapon | undefined;
163
171
  get level(): number;
164
172
  set level(v: number);
165
173
  get xp(): number;
@@ -259,7 +267,7 @@ export declare class Unit extends Handle<junit> {
259
267
  dropItemTarget(item: Item, target: Widget): boolean;
260
268
  dropItemSlot(item: Item, slot: number): boolean;
261
269
  itemInSlot(slot: number): Item | null;
262
- addAbility(abilityId: number): UnitAbility | null;
270
+ addAbility(abilityId: number): UnitAbility | undefined;
263
271
  makeAbilityPermanent(abilityId: number, permanent: true): boolean;
264
272
  setAbilityLevel(abilityId: number, level: number): number;
265
273
  getAbilityLevel(abilityId: number): number;
@@ -270,6 +278,7 @@ export declare class Unit extends Handle<junit> {
270
278
  getAbilityRemainingCooldown(abilityId: number): number;
271
279
  startAbilityCooldown(abilityId: number, cooldown: number): void;
272
280
  endAbilityCooldown(abilityId: number): void;
281
+ interruptMovement(): void;
273
282
  interruptAttack(): void;
274
283
  interruptCast(abilityId: number): void;
275
284
  getDistanceTo(target: Unit | Vec2): number;
@@ -292,6 +301,7 @@ export declare class Unit extends Handle<junit> {
292
301
  get onUnitInRange(): Record<number, Event<[Unit]>>;
293
302
  get onManaEqual(): Record<number, Event<[Unit, number]>>;
294
303
  get manaEvent(): Record<Operator, Record<number, Event<[Unit]>>>;
304
+ get targetAcquiredEvent(): Event;
295
305
  get onSelect(): Event;
296
306
  get onDeselect(): Event;
297
307
  get onImmediateOrder(): Event<[number]>;
@@ -345,6 +355,7 @@ export declare class Unit extends Handle<junit> {
345
355
  static itemPickedUpEvent: UnitTriggerEvent<[Item]>;
346
356
  static itemUsedEvent: UnitTriggerEvent<[Item]>;
347
357
  static itemStackedEvent: UnitTriggerEvent<[Item]>;
358
+ static get itemChargesChangedEvent(): Event<[unit: Unit, item: Item]>;
348
359
  static get itemUseOrderEvent(): Event<[unit: Unit, item: Item]>;
349
360
  static get itemMoveOrderEvent(): Event<[
350
361
  unit: Unit,