warscript 0.0.1-dev.a44a461 → 0.0.1-dev.a4646d1

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 (123) hide show
  1. package/attributes.d.ts +1 -2
  2. package/attributes.lua +9 -0
  3. package/core/types/frame.lua +24 -21
  4. package/core/types/player.d.ts +16 -0
  5. package/core/types/player.lua +60 -15
  6. package/core/types/playerCamera.d.ts +2 -0
  7. package/core/types/playerCamera.lua +123 -5
  8. package/core/types/tileCell.d.ts +11 -1
  9. package/core/types/tileCell.lua +97 -0
  10. package/core/types/timer.d.ts +3 -1
  11. package/core/types/timer.lua +27 -2
  12. package/decl/native.d.ts +6 -4
  13. package/destroyable.d.ts +1 -0
  14. package/destroyable.lua +9 -0
  15. package/engine/behavior.d.ts +14 -1
  16. package/engine/behavior.lua +230 -70
  17. package/engine/behaviour/ability/apply-buff.lua +5 -5
  18. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  19. package/engine/behaviour/ability/emulate-impact.lua +11 -3
  20. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  21. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  22. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  23. package/engine/behaviour/ability/restore-mana.lua +6 -6
  24. package/engine/behaviour/ability.d.ts +2 -1
  25. package/engine/behaviour/ability.lua +10 -18
  26. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  27. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  28. package/engine/behaviour/unit.d.ts +39 -3
  29. package/engine/behaviour/unit.lua +269 -6
  30. package/engine/buff.d.ts +21 -8
  31. package/engine/buff.lua +187 -121
  32. package/engine/internal/ability.d.ts +7 -1
  33. package/engine/internal/ability.lua +49 -9
  34. package/engine/internal/item/ability.lua +63 -11
  35. package/engine/internal/item+owner.lua +12 -6
  36. package/engine/internal/item.d.ts +16 -16
  37. package/engine/internal/item.lua +135 -49
  38. package/engine/internal/mechanics/cast-ability.lua +6 -3
  39. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  40. package/engine/internal/misc/frame-coordinates.lua +21 -0
  41. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  42. package/engine/internal/misc/get-terrain-z.lua +11 -0
  43. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  44. package/engine/internal/misc/player-local-handle.lua +5 -0
  45. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  46. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  47. package/engine/internal/unit/ability.d.ts +35 -0
  48. package/engine/internal/unit/ability.lua +98 -9
  49. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  50. package/engine/internal/unit/allowed-targets.lua +9 -1
  51. package/engine/internal/unit/attributes.d.ts +17 -0
  52. package/engine/internal/unit/attributes.lua +46 -0
  53. package/engine/internal/unit/bonus.d.ts +2 -0
  54. package/engine/internal/unit/bonus.lua +10 -0
  55. package/engine/internal/unit/fly-height.d.ts +7 -0
  56. package/engine/internal/unit/fly-height.lua +20 -0
  57. package/engine/internal/unit/interrupts.d.ts +12 -0
  58. package/engine/internal/unit/interrupts.lua +28 -0
  59. package/engine/internal/unit/main-selected.lua +12 -27
  60. package/engine/internal/unit/order.d.ts +20 -0
  61. package/engine/internal/unit/order.lua +136 -0
  62. package/engine/internal/unit/scale.d.ts +7 -0
  63. package/engine/internal/unit/scale.lua +20 -0
  64. package/engine/internal/unit+ability.lua +10 -1
  65. package/engine/internal/unit-missile-launch.lua +52 -14
  66. package/engine/internal/unit.d.ts +27 -24
  67. package/engine/internal/unit.lua +298 -213
  68. package/engine/local-client.d.ts +2 -0
  69. package/engine/local-client.lua +30 -0
  70. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  71. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  72. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  73. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  74. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  75. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  76. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  77. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  78. package/engine/object-data/entry/ability-type.lua +5 -4
  79. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  80. package/engine/object-data/entry/destructible-type.lua +155 -0
  81. package/engine/object-data/entry/unit-type.d.ts +15 -2
  82. package/engine/object-data/entry/unit-type.lua +135 -33
  83. package/engine/object-field/ability.d.ts +3 -3
  84. package/engine/object-field/ability.lua +7 -6
  85. package/engine/object-field/unit.d.ts +31 -5
  86. package/engine/object-field/unit.lua +95 -0
  87. package/engine/object-field.d.ts +17 -6
  88. package/engine/object-field.lua +291 -134
  89. package/engine/random.d.ts +9 -0
  90. package/engine/random.lua +13 -0
  91. package/engine/standard/fields/ability.d.ts +2 -2
  92. package/engine/standard/fields/ability.lua +2 -2
  93. package/engine/standard/fields/unit.d.ts +12 -0
  94. package/engine/standard/fields/unit.lua +20 -0
  95. package/engine/synchronization.d.ts +11 -0
  96. package/engine/synchronization.lua +77 -0
  97. package/engine/text-tag.d.ts +36 -2
  98. package/engine/text-tag.lua +250 -10
  99. package/engine/unit.d.ts +5 -0
  100. package/engine/unit.lua +5 -0
  101. package/net/socket.lua +1 -1
  102. package/objutil/buff.lua +10 -8
  103. package/package.json +2 -2
  104. package/patch-lua.lua +9 -0
  105. package/patch-lualib.lua +1 -1
  106. package/utility/arrays.d.ts +1 -0
  107. package/utility/arrays.lua +8 -0
  108. package/utility/callback-array.d.ts +17 -0
  109. package/utility/callback-array.lua +61 -0
  110. package/utility/functions.d.ts +7 -0
  111. package/utility/functions.lua +12 -0
  112. package/utility/linked-map.d.ts +26 -0
  113. package/utility/linked-map.lua +66 -0
  114. package/utility/linked-set.d.ts +1 -0
  115. package/utility/linked-set.lua +23 -1
  116. package/utility/lua-maps.d.ts +12 -2
  117. package/utility/lua-maps.lua +37 -2
  118. package/utility/lua-sets.d.ts +1 -0
  119. package/utility/lua-sets.lua +4 -0
  120. package/utility/records.lua +20 -1
  121. package/utility/types.d.ts +3 -0
  122. package/core/types/order.d.ts +0 -25
  123. package/core/types/order.lua +0 -55
@@ -27,6 +27,9 @@ local attackTypeToString = ____attack_2Dtype.attackTypeToString
27
27
  local stringToAttackType = ____attack_2Dtype.stringToAttackType
28
28
  local ____config = require("config")
29
29
  local WarscriptConfig = ____config.WarscriptConfig
30
+ local ____armor_2Dtype = require("engine.object-data.auxiliary.armor-type")
31
+ local armorTypeToString = ____armor_2Dtype.armorTypeToString
32
+ local stringToArmorType = ____armor_2Dtype.stringToArmorType
30
33
  local getOrCreateUnitTypeWeapons
31
34
  ____exports.UnitTypeWeapon = __TS__Class()
32
35
  local UnitTypeWeapon = ____exports.UnitTypeWeapon
@@ -235,21 +238,21 @@ __TS__SetDescriptor(
235
238
  )
236
239
  __TS__SetDescriptor(
237
240
  UnitTypeWeapon.prototype,
238
- "range",
241
+ "missileModelPathSD",
239
242
  {
240
243
  get = function(self)
241
244
  local ____self_17 = self.unitType
242
- return ____self_17.getNumberField(
245
+ return ____self_17.getStringField(
243
246
  ____self_17,
244
- ("ua" .. tostring(self.index)) .. "r"
247
+ ("ua" .. tostring(self.index)) .. "m:sd"
245
248
  )
246
249
  end,
247
- set = function(self, range)
250
+ set = function(self, missileModelPathSD)
248
251
  local ____self_18 = self.unitType
249
- ____self_18.setNumberField(
252
+ ____self_18.setStringField(
250
253
  ____self_18,
251
- ("ua" .. tostring(self.index)) .. "r",
252
- range
254
+ ("ua" .. tostring(self.index)) .. "m:sd",
255
+ missileModelPathSD
253
256
  )
254
257
  end
255
258
  },
@@ -257,21 +260,21 @@ __TS__SetDescriptor(
257
260
  )
258
261
  __TS__SetDescriptor(
259
262
  UnitTypeWeapon.prototype,
260
- "soundType",
263
+ "missileModelPathHD",
261
264
  {
262
265
  get = function(self)
263
266
  local ____self_19 = self.unitType
264
267
  return ____self_19.getStringField(
265
268
  ____self_19,
266
- "ucs" .. tostring(self.index)
269
+ ("ua" .. tostring(self.index)) .. "m:hd"
267
270
  )
268
271
  end,
269
- set = function(self, soundType)
272
+ set = function(self, missileModelPathHD)
270
273
  local ____self_20 = self.unitType
271
274
  ____self_20.setStringField(
272
275
  ____self_20,
273
- "ucs" .. tostring(self.index),
274
- soundType
276
+ ("ua" .. tostring(self.index)) .. "m:hd",
277
+ missileModelPathHD
275
278
  )
276
279
  end
277
280
  },
@@ -279,21 +282,21 @@ __TS__SetDescriptor(
279
282
  )
280
283
  __TS__SetDescriptor(
281
284
  UnitTypeWeapon.prototype,
282
- "soundTypeSD",
285
+ "range",
283
286
  {
284
287
  get = function(self)
285
288
  local ____self_21 = self.unitType
286
- return ____self_21.getStringField(
289
+ return ____self_21.getNumberField(
287
290
  ____self_21,
288
- ("ucs" .. tostring(self.index)) .. ":sd"
291
+ ("ua" .. tostring(self.index)) .. "r"
289
292
  )
290
293
  end,
291
- set = function(self, soundTypeSD)
294
+ set = function(self, range)
292
295
  local ____self_22 = self.unitType
293
- ____self_22.setStringField(
296
+ ____self_22.setNumberField(
294
297
  ____self_22,
295
- ("ucs" .. tostring(self.index)) .. ":sd",
296
- soundTypeSD
298
+ ("ua" .. tostring(self.index)) .. "r",
299
+ range
297
300
  )
298
301
  end
299
302
  },
@@ -301,19 +304,63 @@ __TS__SetDescriptor(
301
304
  )
302
305
  __TS__SetDescriptor(
303
306
  UnitTypeWeapon.prototype,
304
- "soundTypeHD",
307
+ "soundType",
305
308
  {
306
309
  get = function(self)
307
310
  local ____self_23 = self.unitType
308
311
  return ____self_23.getStringField(
309
312
  ____self_23,
310
- ("ucs" .. tostring(self.index)) .. ":hd"
313
+ "ucs" .. tostring(self.index)
311
314
  )
312
315
  end,
313
- set = function(self, soundTypeHD)
316
+ set = function(self, soundType)
314
317
  local ____self_24 = self.unitType
315
318
  ____self_24.setStringField(
316
319
  ____self_24,
320
+ "ucs" .. tostring(self.index),
321
+ soundType
322
+ )
323
+ end
324
+ },
325
+ true
326
+ )
327
+ __TS__SetDescriptor(
328
+ UnitTypeWeapon.prototype,
329
+ "soundTypeSD",
330
+ {
331
+ get = function(self)
332
+ local ____self_25 = self.unitType
333
+ return ____self_25.getStringField(
334
+ ____self_25,
335
+ ("ucs" .. tostring(self.index)) .. ":sd"
336
+ )
337
+ end,
338
+ set = function(self, soundTypeSD)
339
+ local ____self_26 = self.unitType
340
+ ____self_26.setStringField(
341
+ ____self_26,
342
+ ("ucs" .. tostring(self.index)) .. ":sd",
343
+ soundTypeSD
344
+ )
345
+ end
346
+ },
347
+ true
348
+ )
349
+ __TS__SetDescriptor(
350
+ UnitTypeWeapon.prototype,
351
+ "soundTypeHD",
352
+ {
353
+ get = function(self)
354
+ local ____self_27 = self.unitType
355
+ return ____self_27.getStringField(
356
+ ____self_27,
357
+ ("ucs" .. tostring(self.index)) .. ":hd"
358
+ )
359
+ end,
360
+ set = function(self, soundTypeHD)
361
+ local ____self_28 = self.unitType
362
+ ____self_28.setStringField(
363
+ ____self_28,
317
364
  ("ucs" .. tostring(self.index)) .. ":hd",
318
365
  soundTypeHD
319
366
  )
@@ -936,6 +983,19 @@ __TS__SetDescriptor(
936
983
  },
937
984
  true
938
985
  )
986
+ __TS__SetDescriptor(
987
+ UnitType.prototype,
988
+ "selectionCircleHeight",
989
+ {
990
+ get = function(self)
991
+ return self:getNumberField("uslz")
992
+ end,
993
+ set = function(self, height)
994
+ self:setNumberField("uslz", height)
995
+ end
996
+ },
997
+ true
998
+ )
939
999
  __TS__SetDescriptor(
940
1000
  UnitType.prototype,
941
1001
  "selectionCircleScale",
@@ -1183,6 +1243,19 @@ __TS__SetDescriptor(
1183
1243
  },
1184
1244
  true
1185
1245
  )
1246
+ __TS__SetDescriptor(
1247
+ UnitType.prototype,
1248
+ "armor",
1249
+ {
1250
+ get = function(self)
1251
+ return self:getNumberField("udef")
1252
+ end,
1253
+ set = function(self, armor)
1254
+ self:setNumberField("udef", armor)
1255
+ end
1256
+ },
1257
+ true
1258
+ )
1186
1259
  __TS__SetDescriptor(
1187
1260
  UnitType.prototype,
1188
1261
  "armorSoundType",
@@ -1222,6 +1295,22 @@ __TS__SetDescriptor(
1222
1295
  },
1223
1296
  true
1224
1297
  )
1298
+ __TS__SetDescriptor(
1299
+ UnitType.prototype,
1300
+ "armorType",
1301
+ {
1302
+ get = function(self)
1303
+ return stringToArmorType(self:getStringField("udty"))
1304
+ end,
1305
+ set = function(self, armorType)
1306
+ self:setStringField(
1307
+ "udty",
1308
+ armorTypeToString(armorType)
1309
+ )
1310
+ end
1311
+ },
1312
+ true
1313
+ )
1225
1314
  __TS__SetDescriptor(
1226
1315
  UnitType.prototype,
1227
1316
  "combatClassifications",
@@ -1240,7 +1329,7 @@ __TS__SetDescriptor(
1240
1329
  )
1241
1330
  __TS__SetDescriptor(
1242
1331
  UnitType.prototype,
1243
- "unitClassifications",
1332
+ "classifications",
1244
1333
  {
1245
1334
  get = function(self)
1246
1335
  return stringArrayToUnitClassifications(self:getStringsField("utyp"))
@@ -1476,6 +1565,19 @@ __TS__SetDescriptor(
1476
1565
  },
1477
1566
  true
1478
1567
  )
1568
+ __TS__SetDescriptor(
1569
+ UnitType.prototype,
1570
+ "level",
1571
+ {
1572
+ get = function(self)
1573
+ return self:getNumberField("ulev")
1574
+ end,
1575
+ set = function(self, level)
1576
+ self:setNumberField("ulev", level)
1577
+ end
1578
+ },
1579
+ true
1580
+ )
1479
1581
  __TS__SetDescriptor(
1480
1582
  UnitType.prototype,
1481
1583
  "manaRegenerationRate",
@@ -1622,11 +1724,11 @@ __TS__SetDescriptor(
1622
1724
  implementReadonlyNumberIndexSupplier(
1623
1725
  ____exports.UnitType,
1624
1726
  function(id)
1625
- local ____class_25 = __TS__Class()
1626
- ____class_25.name = ____class_25.name
1627
- __TS__ClassExtends(____class_25, ____exports.UnitType)
1628
- ____class_25.BASE_ID = id
1629
- return ____class_25
1727
+ local ____class_29 = __TS__Class()
1728
+ ____class_29.name = ____class_29.name
1729
+ __TS__ClassExtends(____class_29, ____exports.UnitType)
1730
+ ____class_29.BASE_ID = id
1731
+ return ____class_29
1630
1732
  end
1631
1733
  )
1632
1734
  ____exports.HeroUnitType = __TS__Class()
@@ -1687,11 +1789,11 @@ __TS__SetDescriptor(
1687
1789
  implementReadonlyNumberIndexSupplier(
1688
1790
  ____exports.HeroUnitType,
1689
1791
  function(id)
1690
- local ____class_26 = __TS__Class()
1691
- ____class_26.name = ____class_26.name
1692
- __TS__ClassExtends(____class_26, ____exports.HeroUnitType)
1693
- ____class_26.BASE_ID = id
1694
- return ____class_26
1792
+ local ____class_30 = __TS__Class()
1793
+ ____class_30.name = ____class_30.name
1794
+ __TS__ClassExtends(____class_30, ____exports.HeroUnitType)
1795
+ ____class_30.BASE_ID = id
1796
+ return ____class_30
1695
1797
  end
1696
1798
  )
1697
1799
  return ____exports
@@ -12,7 +12,7 @@ import { ReadonlyNonEmptyLinkedSet } from "../../utility/linked-set";
12
12
  export declare abstract class AbilityField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType extends jabilityfield = jabilityfield> extends ObjectField<AbilityType, Ability, ValueType, NativeFieldType> {
13
13
  protected get instanceClass(): typeof Ability;
14
14
  protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
15
- protected hasNativeFieldValue(instance: Ability): boolean;
15
+ protected hasNativeFieldValue(abilityTypeId: AbilityTypeId): boolean;
16
16
  static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<AbilityField>>;
17
17
  }
18
18
  export declare class AbilityBooleanField extends AbilityField<boolean, jabilitybooleanfield> {
@@ -48,7 +48,7 @@ export declare class AbilityStringField extends AbilityField<string, jabilitystr
48
48
  export declare abstract class AbilityArrayField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType extends jabilityfield = jabilityfield> extends ObjectArrayField<AbilityType, Ability, ValueType, NativeFieldType> {
49
49
  protected get instanceClass(): typeof Ability;
50
50
  protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
51
- protected hasNativeFieldValue(instance: Ability): boolean;
51
+ protected hasNativeFieldValue(abilityTypeId: AbilityTypeId): boolean;
52
52
  }
53
53
  export declare class AbilityStringArrayField extends AbilityArrayField<string, jabilitystringlevelfield> {
54
54
  protected get defaultValue(): string;
@@ -68,7 +68,7 @@ export declare abstract class AbilityLevelField<ValueType extends number | strin
68
68
  protected get instanceClass(): typeof Ability;
69
69
  protected getLevelCount(entry: AbilityType | Ability): number;
70
70
  protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
71
- protected hasNativeFieldValue(instance: Ability): boolean;
71
+ protected hasNativeFieldValue(abilityTypeId: AbilityTypeId): boolean;
72
72
  static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<ReadonlyObjectLevelFieldType<AbilityLevelField>>;
73
73
  }
74
74
  export declare class AbilityBooleanLevelField extends AbilityLevelField<boolean, boolean, jabilityintegerlevelfield> {
@@ -7,6 +7,7 @@ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
7
7
  local ____exports = {}
8
8
  local ____ability = require("engine.internal.ability")
9
9
  local Ability = ____ability.Ability
10
+ local abilityTypeHasField = ____ability.abilityTypeHasField
10
11
  local ____object_2Dfield = require("engine.object-field")
11
12
  local ObjectArrayField = ____object_2Dfield.ObjectArrayField
12
13
  local ObjectField = ____object_2Dfield.ObjectField
@@ -29,8 +30,8 @@ __TS__ClassExtends(AbilityField, ObjectField)
29
30
  function AbilityField.prototype.getObjectDataEntryId(self, instance)
30
31
  return instance.typeId
31
32
  end
32
- function AbilityField.prototype.hasNativeFieldValue(self, instance)
33
- return instance:hasField(self.nativeField)
33
+ function AbilityField.prototype.hasNativeFieldValue(self, abilityTypeId)
34
+ return abilityTypeHasField(abilityTypeId, self.nativeField)
34
35
  end
35
36
  __TS__SetDescriptor(
36
37
  AbilityField.prototype,
@@ -197,8 +198,8 @@ __TS__ClassExtends(AbilityArrayField, ObjectArrayField)
197
198
  function AbilityArrayField.prototype.getObjectDataEntryId(self, instance)
198
199
  return instance.typeId
199
200
  end
200
- function AbilityArrayField.prototype.hasNativeFieldValue(self, instance)
201
- return instance:hasField(self.nativeField)
201
+ function AbilityArrayField.prototype.hasNativeFieldValue(self, abilityTypeId)
202
+ return abilityTypeHasField(abilityTypeId, self.nativeField)
202
203
  end
203
204
  __TS__SetDescriptor(
204
205
  AbilityArrayField.prototype,
@@ -269,8 +270,8 @@ end
269
270
  function AbilityLevelField.prototype.getObjectDataEntryId(self, instance)
270
271
  return instance.typeId
271
272
  end
272
- function AbilityLevelField.prototype.hasNativeFieldValue(self, instance)
273
- return instance:hasField(self.nativeField)
273
+ function AbilityLevelField.prototype.hasNativeFieldValue(self, abilityTypeId)
274
+ return abilityTypeHasField(abilityTypeId, self.nativeField)
274
275
  end
275
276
  __TS__SetDescriptor(
276
277
  AbilityLevelField.prototype,
@@ -1,37 +1,44 @@
1
1
  /** @noSelfInFile */
2
2
  import { Unit } from "../internal/unit";
3
- import { ObjectField, ObjectLevelField, ObjectLevelFieldValueChangeEvent, ReadonlyObjectLevelFieldType } from "../object-field";
3
+ import { ObjectField, ObjectFieldValueChangeEvent, ObjectLevelField, ObjectLevelFieldValueChangeEvent, ReadonlyObjectFieldType, ReadonlyObjectLevelFieldType } from "../object-field";
4
4
  import { UnitType, UnitTypeId } from "../object-data/entry/unit-type";
5
5
  import { ReadonlyNonEmptyLinkedSet } from "../../utility/linked-set";
6
6
  import { AttackType } from "../object-data/auxiliary/attack-type";
7
+ import { UnitClassifications } from "../object-data/auxiliary/unit-classification";
8
+ import { HealthRegenerationType } from "../object-data/auxiliary/health-regeneration-type";
7
9
  export declare abstract class UnitField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = any> extends ObjectField<UnitType, Unit, ValueType, NativeFieldType> {
8
10
  protected get instanceClass(): typeof Unit;
9
11
  protected getObjectDataEntryId(instance: Unit): UnitTypeId;
10
12
  protected hasNativeFieldValue(): boolean;
13
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitField>>;
11
14
  }
12
15
  export declare class UnitBooleanField extends UnitField<boolean, junitbooleanfield> {
13
16
  protected get defaultValue(): boolean;
14
17
  protected getNativeFieldById(id: number): junitbooleanfield;
15
18
  protected getNativeFieldValue(instance: Unit): boolean;
16
19
  protected setNativeFieldValue(instance: Unit, value: boolean): boolean;
20
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitBooleanField>>;
17
21
  }
18
22
  export declare class UnitFloatField extends UnitField<number, junitrealfield> {
19
23
  protected get defaultValue(): number;
20
24
  protected getNativeFieldById(id: number): junitrealfield;
21
25
  protected getNativeFieldValue(instance: Unit): number;
22
26
  protected setNativeFieldValue(instance: Unit, value: number): boolean;
27
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitFloatField>>;
23
28
  }
24
- export declare class UnitIntegerField extends UnitField<number, junitintegerfield> {
25
- protected get defaultValue(): number;
29
+ export declare class UnitIntegerField<T extends number = number> extends UnitField<T, junitintegerfield> {
30
+ protected get defaultValue(): T;
26
31
  protected getNativeFieldById(id: number): junitintegerfield;
27
- protected getNativeFieldValue(instance: Unit): number;
28
- protected setNativeFieldValue(instance: Unit, value: number): boolean;
32
+ protected getNativeFieldValue(instance: Unit): T;
33
+ protected setNativeFieldValue(instance: Unit, value: T): boolean;
34
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitIntegerField>>;
29
35
  }
30
36
  export declare class UnitStringField extends UnitField<string, junitstringfield> {
31
37
  protected get defaultValue(): string;
32
38
  protected getNativeFieldById(id: number): junitstringfield;
33
39
  protected getNativeFieldValue(instance: Unit): string;
34
40
  protected setNativeFieldValue(instance: Unit, value: string): boolean;
41
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitStringField>>;
35
42
  }
36
43
  type junitweaponfield = junitweaponbooleanfield | junitweaponintegerfield | junitweaponrealfield | junitweaponstringfield;
37
44
  export declare abstract class UnitWeaponField<ValueType extends number | string | boolean = number | string | boolean, InputValueType extends ValueType = never, NativeFieldType extends junitweaponfield = junitweaponfield> extends ObjectLevelField<UnitType, Unit, ValueType, InputValueType, NativeFieldType> {
@@ -56,4 +63,23 @@ export declare abstract class UnitEnumWeaponField<T extends number> extends Unit
56
63
  export declare class UnitAttackTypeWeaponField extends UnitEnumWeaponField<AttackType> {
57
64
  protected values: ReadonlyNonEmptyLinkedSet<AttackType>;
58
65
  }
66
+ export declare class UnitClassificationsField extends UnitField<UnitClassifications, junitintegerfield> {
67
+ protected get defaultValue(): UnitClassifications;
68
+ protected getNativeFieldById(id: number): junitintegerfield;
69
+ protected getNativeFieldValue(instance: Unit): UnitClassifications;
70
+ protected setNativeFieldValue(instance: Unit, value: UnitClassifications): boolean;
71
+ }
72
+ export declare class UnitFlyHeightField extends UnitFloatField {
73
+ protected getNativeFieldValue(instance: Unit): number;
74
+ protected setNativeFieldValue(instance: Unit, value: number): boolean;
75
+ }
76
+ export declare class UnitPropulsionWindowField extends UnitFloatField {
77
+ protected getNativeFieldValue(instance: Unit): number;
78
+ protected setNativeFieldValue(instance: Unit, value: number): boolean;
79
+ }
80
+ export declare class UnitHealthRegenerationTypeField extends UnitIntegerField<HealthRegenerationType> {
81
+ }
82
+ export declare class UnitScalingValueField extends UnitFloatField {
83
+ protected setNativeFieldValue(instance: Unit, value: number): boolean;
84
+ }
59
85
  export {};
@@ -18,6 +18,11 @@ local convertUnitStringField = ConvertUnitStringField
18
18
  local convertUnitWeaponIntegerField = ConvertUnitWeaponIntegerField
19
19
  local getUnitWeaponIntegerField = BlzGetUnitWeaponIntegerField
20
20
  local setUnitWeaponIntegerField = BlzSetUnitWeaponIntegerField
21
+ local getUnitFlyHeight = GetUnitFlyHeight
22
+ local setUnitFlyHeight = SetUnitFlyHeight
23
+ local getUnitPropulsionWindow = GetUnitPropWindow
24
+ local setUnitPropulsionWindow = SetUnitPropWindow
25
+ local setUnitScale = SetUnitScale
21
26
  ____exports.UnitField = __TS__Class()
22
27
  local UnitField = ____exports.UnitField
23
28
  UnitField.name = "UnitField"
@@ -36,6 +41,13 @@ __TS__SetDescriptor(
36
41
  end},
37
42
  true
38
43
  )
44
+ __TS__ObjectDefineProperty(
45
+ UnitField,
46
+ "valueChangeEvent",
47
+ {get = function(self)
48
+ return self:getOrCreateValueChangeEvent()
49
+ end}
50
+ )
39
51
  ____exports.UnitBooleanField = __TS__Class()
40
52
  local UnitBooleanField = ____exports.UnitBooleanField
41
53
  UnitBooleanField.name = "UnitBooleanField"
@@ -57,6 +69,13 @@ __TS__SetDescriptor(
57
69
  end},
58
70
  true
59
71
  )
72
+ __TS__ObjectDefineProperty(
73
+ UnitBooleanField,
74
+ "valueChangeEvent",
75
+ {get = function(self)
76
+ return self:getOrCreateValueChangeEvent()
77
+ end}
78
+ )
60
79
  ____exports.UnitFloatField = __TS__Class()
61
80
  local UnitFloatField = ____exports.UnitFloatField
62
81
  UnitFloatField.name = "UnitFloatField"
@@ -78,6 +97,13 @@ __TS__SetDescriptor(
78
97
  end},
79
98
  true
80
99
  )
100
+ __TS__ObjectDefineProperty(
101
+ UnitFloatField,
102
+ "valueChangeEvent",
103
+ {get = function(self)
104
+ return self:getOrCreateValueChangeEvent()
105
+ end}
106
+ )
81
107
  ____exports.UnitIntegerField = __TS__Class()
82
108
  local UnitIntegerField = ____exports.UnitIntegerField
83
109
  UnitIntegerField.name = "UnitIntegerField"
@@ -99,6 +125,13 @@ __TS__SetDescriptor(
99
125
  end},
100
126
  true
101
127
  )
128
+ __TS__ObjectDefineProperty(
129
+ UnitIntegerField,
130
+ "valueChangeEvent",
131
+ {get = function(self)
132
+ return self:getOrCreateValueChangeEvent()
133
+ end}
134
+ )
102
135
  ____exports.UnitStringField = __TS__Class()
103
136
  local UnitStringField = ____exports.UnitStringField
104
137
  UnitStringField.name = "UnitStringField"
@@ -120,6 +153,13 @@ __TS__SetDescriptor(
120
153
  end},
121
154
  true
122
155
  )
156
+ __TS__ObjectDefineProperty(
157
+ UnitStringField,
158
+ "valueChangeEvent",
159
+ {get = function(self)
160
+ return self:getOrCreateValueChangeEvent()
161
+ end}
162
+ )
123
163
  ____exports.UnitWeaponField = __TS__Class()
124
164
  local UnitWeaponField = ____exports.UnitWeaponField
125
165
  UnitWeaponField.name = "UnitWeaponField"
@@ -215,4 +255,59 @@ function UnitAttackTypeWeaponField.prototype.____constructor(self, ...)
215
255
  6
216
256
  )
217
257
  end
258
+ ____exports.UnitClassificationsField = __TS__Class()
259
+ local UnitClassificationsField = ____exports.UnitClassificationsField
260
+ UnitClassificationsField.name = "UnitClassificationsField"
261
+ __TS__ClassExtends(UnitClassificationsField, ____exports.UnitField)
262
+ function UnitClassificationsField.prototype.getNativeFieldById(self, id)
263
+ return convertUnitIntegerField(id)
264
+ end
265
+ function UnitClassificationsField.prototype.getNativeFieldValue(self, instance)
266
+ return instance:getField(self.nativeField)
267
+ end
268
+ function UnitClassificationsField.prototype.setNativeFieldValue(self, instance, value)
269
+ return instance:setField(self.nativeField, value)
270
+ end
271
+ __TS__SetDescriptor(
272
+ UnitClassificationsField.prototype,
273
+ "defaultValue",
274
+ {get = function(self)
275
+ return 0
276
+ end},
277
+ true
278
+ )
279
+ ____exports.UnitFlyHeightField = __TS__Class()
280
+ local UnitFlyHeightField = ____exports.UnitFlyHeightField
281
+ UnitFlyHeightField.name = "UnitFlyHeightField"
282
+ __TS__ClassExtends(UnitFlyHeightField, ____exports.UnitFloatField)
283
+ function UnitFlyHeightField.prototype.getNativeFieldValue(self, instance)
284
+ return getUnitFlyHeight(instance.handle)
285
+ end
286
+ function UnitFlyHeightField.prototype.setNativeFieldValue(self, instance, value)
287
+ setUnitFlyHeight(instance.handle, value, 100000)
288
+ return true
289
+ end
290
+ ____exports.UnitPropulsionWindowField = __TS__Class()
291
+ local UnitPropulsionWindowField = ____exports.UnitPropulsionWindowField
292
+ UnitPropulsionWindowField.name = "UnitPropulsionWindowField"
293
+ __TS__ClassExtends(UnitPropulsionWindowField, ____exports.UnitFloatField)
294
+ function UnitPropulsionWindowField.prototype.getNativeFieldValue(self, instance)
295
+ return getUnitPropulsionWindow(instance.handle)
296
+ end
297
+ function UnitPropulsionWindowField.prototype.setNativeFieldValue(self, instance, value)
298
+ setUnitPropulsionWindow(instance.handle, value)
299
+ return true
300
+ end
301
+ ____exports.UnitHealthRegenerationTypeField = __TS__Class()
302
+ local UnitHealthRegenerationTypeField = ____exports.UnitHealthRegenerationTypeField
303
+ UnitHealthRegenerationTypeField.name = "UnitHealthRegenerationTypeField"
304
+ __TS__ClassExtends(UnitHealthRegenerationTypeField, ____exports.UnitIntegerField)
305
+ ____exports.UnitScalingValueField = __TS__Class()
306
+ local UnitScalingValueField = ____exports.UnitScalingValueField
307
+ UnitScalingValueField.name = "UnitScalingValueField"
308
+ __TS__ClassExtends(UnitScalingValueField, ____exports.UnitFloatField)
309
+ function UnitScalingValueField.prototype.setNativeFieldValue(self, instance, value)
310
+ setUnitScale(instance.handle, value, value, value)
311
+ return UnitScalingValueField.____super.prototype.setNativeFieldValue(self, instance, value)
312
+ end
218
313
  return ____exports
@@ -5,9 +5,10 @@ import { ObjectDataEntry, ObjectDataEntryIdType, ObjectDataEntryLevelFieldValueS
5
5
  export type ObjectFieldId = number & {
6
6
  readonly __objectDataEntryFieldId: unique symbol;
7
7
  };
8
- export type ObjectFieldConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (new (id: number) => T);
8
+ export type ObjectFieldConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (new (id: number, isGlobal?: boolean) => T);
9
9
  export type ObjectFieldAbstractConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (abstract new (id: number) => T);
10
10
  declare abstract class ObjectFieldBase<ObjectDataEntryType extends ObjectDataEntry, InstanceType extends AnyNotNil, ValueType, NativeFieldType> {
11
+ readonly isGlobal: boolean;
11
12
  protected abstract readonly instanceClass: AbstractConstructor<InstanceType> | Function;
12
13
  supports(instance: AnyNotNil): instance is InstanceType & {
13
14
  readonly __oneSidedTypeGuard: unique symbol;
@@ -16,10 +17,10 @@ declare abstract class ObjectFieldBase<ObjectDataEntryType extends ObjectDataEnt
16
17
  readonly id: ObjectFieldId;
17
18
  protected abstract getNativeFieldById(id: number): NativeFieldType;
18
19
  protected abstract getObjectDataEntryId(instance: InstanceType): ObjectDataEntryIdType<ObjectDataEntryType>;
19
- protected abstract hasNativeFieldValue(instance: InstanceType): boolean;
20
- hasValue(instance: InstanceType): boolean;
21
- constructor(id: number);
22
- static create<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldConstructor<T>, id?: number): T & symbol;
20
+ protected abstract hasNativeFieldValue(objectDataEntryId: ObjectDataEntryIdType<ObjectDataEntryType>): boolean;
21
+ hasValue(objectDataEntryId: ObjectDataEntryIdType<ObjectDataEntryType>): boolean;
22
+ constructor(id: number, isGlobal?: boolean);
23
+ static create<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldConstructor<T>, id?: number, isGlobal?: boolean): T & symbol;
23
24
  static of<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldAbstractConstructor<T>, id: number): T | undefined;
24
25
  }
25
26
  export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any> | ReadonlyObjectFieldType<ObjectField<any, any, any, any>>> = T extends ObjectField<any, infer InstanceType, infer ValueType, any> ? DispatchingEvent<[
@@ -35,7 +36,8 @@ export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any
35
36
  ]> : never;
36
37
  export type ReadonlyObjectFieldType<T extends ObjectField<any, any, any, any>> = Omit<T, "setValue" | "removeValue" | "trySetValue">;
37
38
  type ReadonlyObjectFieldConstructor<T extends ObjectField> = OmitConstructor<typeof ObjectField> & (abstract new (...args: any[]) => ReadonlyObjectFieldType<T>);
38
- type ObjectFieldModifier<InstanceType extends AnyNotNil, ValueType extends number | string | boolean> = (instance: InstanceType, currentValue: ValueType, originalValue: ValueType) => ValueType;
39
+ export type ObjectFieldModifier<InstanceType extends AnyNotNil, ValueType extends number | string | boolean> = (instance: InstanceType, currentValue: ValueType, originalValue: ValueType) => ValueType;
40
+ export type ObjectLevelFieldModifier<InstanceType extends AnyNotNil, ValueType extends number | string | boolean> = (instance: InstanceType, level: number, currentValue: ValueType, originalValue: ValueType) => ValueType;
39
41
  export declare abstract class ObjectField<ObjectDataEntryType extends ObjectDataEntry = ObjectDataEntry, InstanceType extends AnyNotNil = AnyNotNil, ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = unknown> extends ObjectFieldBase<ObjectDataEntryType, InstanceType, ValueType, NativeFieldType> {
40
42
  protected abstract readonly defaultValue: ValueType;
41
43
  protected abstract getNativeFieldValue(instance: InstanceType): ValueType;
@@ -44,6 +46,7 @@ export declare abstract class ObjectField<ObjectDataEntryType extends ObjectData
44
46
  private modifiersByInstance?;
45
47
  getValue(entry: ObjectDataEntryType | InstanceType, includeModifiers?: boolean): ValueType;
46
48
  setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType): boolean;
49
+ updateActualValue(instance: InstanceType): void;
47
50
  applyModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): void;
48
51
  removeModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): boolean;
49
52
  removeValue(entry: ObjectDataEntryType): boolean;
@@ -79,13 +82,21 @@ export declare abstract class ObjectArrayField<ObjectDataEntryType extends Objec
79
82
  setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType[]): boolean;
80
83
  }
81
84
  export declare abstract class ObjectLevelField<ObjectDataEntryType extends ObjectDataEntry = ObjectDataEntry, InstanceType extends AnyNotNil = AnyNotNil, ValueType extends number | string | boolean = number | string | boolean, InputValueType extends ValueType = never, NativeFieldType = unknown> extends ObjectFieldBase<ObjectDataEntryType, InstanceType, ValueType[], NativeFieldType> {
85
+ private originalValueByLevelByInstance?;
86
+ private modifiersByInstance?;
82
87
  protected abstract readonly defaultValue: ValueType;
83
88
  protected abstract getNativeFieldValue(instance: InstanceType, level: number): ValueType;
84
89
  protected abstract setNativeFieldValue(instance: InstanceType, level: number, value: ValueType): boolean;
85
90
  protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
86
91
  getValue<LevelType extends [number] | []>(entry: ObjectDataEntryType | InstanceType, ...[level]: LevelType): LevelType extends [number] ? ValueType : ValueType[];
87
92
  setValue(entry: ObjectDataEntryType | InstanceType, ...[levelOrValue, value]: [value: ObjectDataEntryLevelFieldValueSupplier<InputValueType, ValueType>] | [level: number, value: InputValueType]): boolean;
93
+ updateActualValue(instance: InstanceType, level?: number): void;
94
+ applyModifier(instance: InstanceType, modifier: ObjectLevelFieldModifier<InstanceType, ValueType>): void;
95
+ removeModifier(instance: InstanceType, modifier: ObjectLevelFieldModifier<InstanceType, ValueType>): boolean;
88
96
  trySetValue(entry: ObjectDataEntryType | InstanceType, levelOrValue: number | unknown, value?: unknown): boolean;
97
+ private getActualValue;
98
+ private setActualValue;
99
+ private calculateActualValue;
89
100
  private invokeValueChangeEvent;
90
101
  private invokeValueChangeEventRecursive;
91
102
  protected static getOrCreateValueChangeEvent<T extends ObjectLevelField, R extends ReadonlyObjectLevelFieldType<T>>(this: ReadonlyObjectLevelFieldConstructor<T>): ObjectLevelFieldValueChangeEvent<R>;