warscript 0.0.1-dev.c16baee → 0.0.1-dev.c1c578a

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 (188) hide show
  1. package/attributes.d.ts +5 -0
  2. package/attributes.lua +8 -1
  3. package/binaryreader.d.ts +1 -0
  4. package/binaryreader.lua +3 -0
  5. package/config.d.ts +5 -0
  6. package/config.lua +10 -0
  7. package/core/types/effect.d.ts +14 -6
  8. package/core/types/effect.lua +131 -35
  9. package/core/types/frame.d.ts +8 -0
  10. package/core/types/frame.lua +93 -1
  11. package/core/types/handle.lua +2 -0
  12. package/core/types/sound.d.ts +17 -24
  13. package/core/types/sound.lua +99 -24
  14. package/core/types/timer.d.ts +6 -7
  15. package/core/types/timer.lua +18 -21
  16. package/core/util.d.ts +1 -1
  17. package/core/util.lua +18 -1
  18. package/decl/native.d.ts +840 -786
  19. package/engine/behavior.d.ts +2 -2
  20. package/engine/behavior.lua +6 -6
  21. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  22. package/engine/behaviour/ability/always-enabled.lua +31 -0
  23. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  24. package/engine/behaviour/ability/apply-buff.lua +32 -0
  25. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  26. package/engine/behaviour/ability/damage.d.ts +39 -11
  27. package/engine/behaviour/ability/damage.lua +83 -37
  28. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  29. package/engine/behaviour/ability/emulate-impact.lua +35 -0
  30. package/engine/behaviour/ability/heal.d.ts +33 -6
  31. package/engine/behaviour/ability/heal.lua +89 -10
  32. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  33. package/engine/behaviour/ability/instant-impact.lua +4 -19
  34. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  35. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  36. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  37. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  38. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  39. package/engine/behaviour/ability/restore-mana.lua +29 -0
  40. package/engine/behaviour/ability.d.ts +20 -4
  41. package/engine/behaviour/ability.lua +111 -38
  42. package/engine/behaviour/unit.d.ts +7 -0
  43. package/engine/behaviour/unit.lua +20 -0
  44. package/engine/buff.d.ts +101 -39
  45. package/engine/buff.lua +458 -203
  46. package/engine/game-map.d.ts +7 -0
  47. package/engine/game-map.lua +32 -0
  48. package/engine/internal/ability.d.ts +16 -13
  49. package/engine/internal/ability.lua +80 -76
  50. package/engine/internal/item/ability.lua +106 -0
  51. package/engine/internal/item+owner.lua +2 -2
  52. package/engine/internal/item.d.ts +4 -3
  53. package/engine/internal/item.lua +56 -25
  54. package/engine/internal/mechanics/ability-duration.lua +1 -1
  55. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  56. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  57. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  58. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  59. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  60. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  61. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  62. package/engine/internal/object-data/evasion-probability.lua +16 -0
  63. package/engine/internal/unit/ability.d.ts +10 -1
  64. package/engine/internal/unit/ability.lua +36 -14
  65. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  66. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  67. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  68. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  69. package/engine/internal/unit/bonus.d.ts +6 -2
  70. package/engine/internal/unit/bonus.lua +23 -1
  71. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  72. package/engine/internal/unit/ignore-events-items.lua +5 -0
  73. package/engine/internal/unit/item.d.ts +24 -0
  74. package/engine/internal/unit/item.lua +78 -0
  75. package/engine/internal/unit/main-selected.d.ts +13 -0
  76. package/engine/internal/unit/main-selected.lua +51 -0
  77. package/engine/internal/unit+ability.lua +2 -2
  78. package/engine/internal/unit+damage.d.ts +2 -11
  79. package/engine/internal/unit+damage.lua +10 -14
  80. package/engine/internal/unit+spellSteal.lua +1 -2
  81. package/engine/internal/unit+transport.lua +4 -10
  82. package/engine/internal/unit-missile-launch.lua +24 -5
  83. package/engine/internal/unit.d.ts +44 -12
  84. package/engine/internal/unit.lua +267 -124
  85. package/engine/internal/utility.lua +12 -0
  86. package/engine/lightning.d.ts +12 -5
  87. package/engine/lightning.lua +48 -14
  88. package/engine/local-client.d.ts +7 -2
  89. package/engine/local-client.lua +82 -0
  90. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  91. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  92. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  93. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  94. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  95. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  96. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  97. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  98. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  99. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  100. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  101. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  102. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  103. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  104. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  105. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  106. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  107. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  108. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  109. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  110. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  111. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  112. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  113. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  114. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  115. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  116. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  117. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  118. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  119. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  120. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  121. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  122. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  123. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  124. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  125. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  126. package/engine/object-data/entry/ability-type/web.lua +52 -0
  127. package/engine/object-data/entry/ability-type.d.ts +19 -17
  128. package/engine/object-data/entry/ability-type.lua +89 -33
  129. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  130. package/engine/object-data/entry/buff-type.d.ts +6 -12
  131. package/engine/object-data/entry/buff-type.lua +13 -29
  132. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  133. package/engine/object-data/entry/item-type.d.ts +15 -1
  134. package/engine/object-data/entry/item-type.lua +93 -2
  135. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  136. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  137. package/engine/object-data/entry/sound-preset.lua +140 -0
  138. package/engine/object-data/entry/unit-type.d.ts +10 -3
  139. package/engine/object-data/entry/unit-type.lua +155 -92
  140. package/engine/object-data/entry/upgrade.d.ts +1 -1
  141. package/engine/object-data/entry/upgrade.lua +4 -4
  142. package/engine/object-data/entry.d.ts +16 -14
  143. package/engine/object-data/entry.lua +60 -32
  144. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  145. package/engine/object-field/ability.d.ts +26 -3
  146. package/engine/object-field/ability.lua +54 -1
  147. package/engine/object-field/unit.d.ts +46 -3
  148. package/engine/object-field/unit.lua +173 -7
  149. package/engine/object-field.d.ts +11 -3
  150. package/engine/object-field.lua +162 -76
  151. package/engine/standard/entries/buff-type.d.ts +3 -0
  152. package/engine/standard/entries/buff-type.lua +3 -0
  153. package/engine/standard/entries/sound-preset.d.ts +10 -0
  154. package/engine/standard/entries/sound-preset.lua +10 -0
  155. package/engine/standard/fields/ability.d.ts +2 -0
  156. package/engine/standard/fields/ability.lua +2 -0
  157. package/engine/unit.d.ts +3 -0
  158. package/engine/unit.lua +3 -0
  159. package/index.d.ts +1 -0
  160. package/index.lua +1 -0
  161. package/lualib_bundle.lua +7 -2
  162. package/net/socket.d.ts +7 -1
  163. package/net/socket.lua +45 -4
  164. package/network.d.ts +1 -0
  165. package/network.lua +3 -2
  166. package/objutil/buff.lua +2 -3
  167. package/objutil/unit.lua +8 -0
  168. package/package.json +2 -2
  169. package/patch-lua.d.ts +0 -0
  170. package/patch-lua.lua +10 -0
  171. package/property.d.ts +55 -0
  172. package/property.lua +374 -0
  173. package/utility/arrays.d.ts +9 -1
  174. package/utility/arrays.lua +37 -3
  175. package/utility/functions.d.ts +1 -0
  176. package/utility/functions.lua +1 -0
  177. package/utility/lazy.d.ts +2 -0
  178. package/utility/lazy.lua +14 -0
  179. package/utility/linked-set.d.ts +12 -2
  180. package/utility/linked-set.lua +8 -2
  181. package/utility/lua-maps.d.ts +3 -0
  182. package/utility/lua-maps.lua +16 -0
  183. package/utility/lua-sets.d.ts +1 -0
  184. package/utility/lua-sets.lua +3 -0
  185. package/utility/reflection.lua +11 -7
  186. package/utility/types.d.ts +1 -0
  187. package/core/mapbounds.d.ts +0 -8
  188. package/core/mapbounds.lua +0 -12
@@ -7,14 +7,33 @@ local ____event = require("event")
7
7
  local Event = ____event.Event
8
8
  local ____timer = require("core.types.timer")
9
9
  local Timer = ____timer.Timer
10
+ local ____lua_2Dsets = require("utility.lua-sets")
11
+ local luaSetOf = ____lua_2Dsets.luaSetOf
10
12
  local autoAttackFinishEvent = __TS__New(Event)
11
13
  rawset(Unit, "autoAttackFinishEvent", autoAttackFinishEvent)
12
14
  local eventTimerByUnit = {}
13
- local function reset(source)
14
- local eventTimer = eventTimerByUnit[source]
15
- if eventTimer then
16
- eventTimer:destroy()
17
- eventTimerByUnit[source] = nil
15
+ local instantOrderIds = luaSetOf(
16
+ orderId("avatar"),
17
+ orderId("berserk"),
18
+ orderId("divineshield"),
19
+ orderId("immolation"),
20
+ orderId("moveslot0"),
21
+ orderId("moveslot1"),
22
+ orderId("moveslot2"),
23
+ orderId("moveslot3"),
24
+ orderId("moveslot4"),
25
+ orderId("moveslot5"),
26
+ orderId("unavatar"),
27
+ orderId("undivineshield"),
28
+ orderId("unimmolation")
29
+ )
30
+ local function reset(source, orderId)
31
+ if not (instantOrderIds[orderId] ~= nil) then
32
+ local eventTimer = eventTimerByUnit[source]
33
+ if eventTimer then
34
+ eventTimer:destroy()
35
+ eventTimerByUnit[source] = nil
36
+ end
18
37
  end
19
38
  end
20
39
  Unit.onImmediateOrder:addListener(reset)
@@ -11,6 +11,10 @@ import { Ability, UnitAbility } from "./ability";
11
11
  import { Widget } from "../../core/types/widget";
12
12
  import type { UnitTypeId } from "../object-data/entry/unit-type";
13
13
  import { CombatClassification, CombatClassifications } from "../object-data/auxiliary/combat-classification";
14
+ import { MovementType } from "../object-data/auxiliary/movement-type";
15
+ import { UnitAttribute } from "../object-data/auxiliary/unit-attribute";
16
+ import { AttackType } from "../object-data/auxiliary/attack-type";
17
+ import { AttributesHolder } from "../../attributes";
14
18
  export type UnitClassification = junittype;
15
19
  export declare namespace UnitClassification {
16
20
  const STRUCTURE: junittype;
@@ -19,6 +23,7 @@ export declare namespace UnitClassification {
19
23
  const GROUND: junittype;
20
24
  const SUMMONED: junittype;
21
25
  const MECHANICAL: junittype;
26
+ const WORKER: junittype;
22
27
  const ANCIENT: junittype;
23
28
  const SUICIDAL: junittype;
24
29
  const TAUREN: junittype;
@@ -36,12 +41,15 @@ type AbilityDispatcherTable<T extends any[] = []> = {
36
41
  readonly [id: number]: Event<[Unit, Ability, ...T]>;
37
42
  };
38
43
  type AbilityEventDispatcher<T extends any[] = []> = Event<[Unit, Ability, ...T]> & AbilityDispatcherTable<T>;
39
- export interface DamagingEvent {
44
+ export interface DamagingEvent extends AttributesHolder {
40
45
  amount: number;
41
- attackType: jattacktype;
46
+ attackType: AttackType;
42
47
  damageType: jdamagetype;
43
48
  weaponType: jweapontype;
49
+ metadata: unknown;
44
50
  readonly isAttack: boolean;
51
+ readonly originalAmount: number;
52
+ readonly originalMetadata: unknown;
45
53
  }
46
54
  export type DamageEvent = DamagingEvent & {
47
55
  preventDeath<P extends any[]>(this: DamageEvent, callback: (this: void, ...parameters: P) => any, ...parameters: P): void;
@@ -93,20 +101,29 @@ export declare class UnitWeapon {
93
101
  set missileSpeed(missileSpeed: number);
94
102
  }
95
103
  declare const enum UnitPropertyKey {
96
- IS_PAUSED = 100,
97
- STUN_COUNTER = 101,
98
- DELAY_HEALTH_CHECKS_COUNTER = 102,
99
- DELAY_HEALTH_CHECKS_HEALTH_BONUS = 103,
100
- PREVENT_DEATH_HEALTH_BONUS = 104,
101
- IS_TEAM_GLOW_HIDDEN = 105
104
+ SYNC_ID = 100,
105
+ IS_PAUSED = 101,
106
+ STUN_COUNTER = 102,
107
+ DELAY_HEALTH_CHECKS_COUNTER = 103,
108
+ DELAY_HEALTH_CHECKS_HEALTH_BONUS = 104,
109
+ PREVENT_DEATH_HEALTH_BONUS = 105,
110
+ IS_TEAM_GLOW_HIDDEN = 106,
111
+ LAST_X = 107,
112
+ LAST_Y = 108
102
113
  }
114
+ export type UnitSyncId = number & {
115
+ readonly __unitSyncId: unique symbol;
116
+ };
103
117
  export declare class Unit extends Handle<junit> {
118
+ readonly syncId: UnitSyncId;
104
119
  private [UnitPropertyKey.IS_PAUSED]?;
105
120
  private [UnitPropertyKey.STUN_COUNTER]?;
106
121
  private [UnitPropertyKey.DELAY_HEALTH_CHECKS_COUNTER]?;
107
122
  private [UnitPropertyKey.DELAY_HEALTH_CHECKS_HEALTH_BONUS]?;
108
123
  private [UnitPropertyKey.PREVENT_DEATH_HEALTH_BONUS]?;
109
124
  private [UnitPropertyKey.IS_TEAM_GLOW_HIDDEN]?;
125
+ private [UnitPropertyKey.LAST_X]?;
126
+ private [UnitPropertyKey.LAST_Y]?;
110
127
  private _owner?;
111
128
  private _timeScale?;
112
129
  private events?;
@@ -127,6 +144,7 @@ export declare class Unit extends Handle<junit> {
127
144
  get isAlive(): boolean;
128
145
  get isDead(): boolean;
129
146
  get isIllusion(): boolean;
147
+ get isStunned(): boolean;
130
148
  get combatClassifications(): CombatClassifications;
131
149
  set combatClassifications(combatClassifications: CombatClassifications);
132
150
  hasCombatClassification(combatClassification: CombatClassification): boolean;
@@ -141,6 +159,7 @@ export declare class Unit extends Handle<junit> {
141
159
  isEnemyOf(unit: Unit): boolean;
142
160
  playAnimation(animation: string, rarity?: jraritycontrol): void;
143
161
  playAnimation(animation: number): void;
162
+ resetAnimation(): void;
144
163
  queueAnimation(animation: string): void;
145
164
  get weapons(): [UnitWeapon, UnitWeapon];
146
165
  get firstWeapon(): UnitWeapon;
@@ -149,6 +168,8 @@ export declare class Unit extends Handle<junit> {
149
168
  set level(v: number);
150
169
  get xp(): number;
151
170
  set xp(v: number);
171
+ get primaryAttribute(): UnitAttribute;
172
+ set primaryAttribute(primaryAttribute: UnitAttribute);
152
173
  get strengthBase(): number;
153
174
  set strengthBase(strengthBase: number);
154
175
  get strengthBonus(): number;
@@ -223,6 +244,8 @@ export declare class Unit extends Handle<junit> {
223
244
  set timeScale(v: number);
224
245
  get collisionSize(): number;
225
246
  get pathingCollisionRange(): number;
247
+ get movementType(): MovementType;
248
+ set movementType(movementType: MovementType);
226
249
  set pathing(v: boolean);
227
250
  isSelected(player: Player): boolean;
228
251
  explode(): void;
@@ -287,7 +310,7 @@ export declare class Unit extends Handle<junit> {
287
310
  static getInRange(x: number, y: number, range: number, predicate?: (unit: Unit) => boolean): Unit[];
288
311
  static getInCollisionRange(x: number, y: number, range: number, predicate?: (unit: Unit) => boolean): Unit[];
289
312
  static getInSector(pos: Vec2, range: number, offsetAngle: number, centralAngle: number): Unit[];
290
- static getSelectionOf(player: Player): Unit[];
313
+ static getSelectionOf(player: Player, target?: Unit[]): Unit[];
291
314
  static readonly deathEvent: UnitTriggerEvent<[Unit]>;
292
315
  static readonly onDecay: UnitTriggerEvent<[]>;
293
316
  static readonly onResurrect: InitializingEvent<[Unit], void>;
@@ -322,9 +345,17 @@ export declare class Unit extends Handle<junit> {
322
345
  static readonly autoAttackStartEvent: UnitTriggerEvent<[Unit]>;
323
346
  static readonly onDamaging: Event<[source: Unit | undefined, target: Unit, event: DamagingEvent]>;
324
347
  static readonly onDamage: InitializingEvent<[source: Unit | undefined, target: Unit, event: DamageEvent], jtrigger>;
325
- static onItemDrop: UnitTriggerEvent<[Item]>;
326
- static onItemPickup: UnitTriggerEvent<[Item]>;
327
- static onItemUse: UnitTriggerEvent<[Item]>;
348
+ static itemDroppedEvent: UnitTriggerEvent<[Item]>;
349
+ static itemPickedUpEvent: UnitTriggerEvent<[Item]>;
350
+ static itemUsedEvent: UnitTriggerEvent<[Item]>;
351
+ static itemStackedEvent: UnitTriggerEvent<[Item]>;
352
+ static get itemUseOrderEvent(): Event<[unit: Unit, item: Item]>;
353
+ static get itemMoveOrderEvent(): Event<[
354
+ unit: Unit,
355
+ item: Item,
356
+ slotFrom: 0 | 1 | 2 | 3 | 4 | 5,
357
+ slotTo: 0 | 1 | 2 | 3 | 4 | 5
358
+ ]>;
328
359
  static get onCreate(): EventDispatcher<[Unit], [Unit]>;
329
360
  static get destroyEvent(): EventDispatcher<[Unit], [Unit]>;
330
361
  getField(field: junitintegerfield | junitrealfield): number;
@@ -335,5 +366,6 @@ export declare class Unit extends Handle<junit> {
335
366
  setField(field: junitbooleanfield, value: boolean): boolean;
336
367
  setField(field: junitstringfield, value: string): boolean;
337
368
  toString(): string;
369
+ static getBySyncId(syncId: UnitSyncId): Unit | undefined;
338
370
  }
339
371
  export {};