warscript 0.0.1-dev.6fc443a → 0.0.1-dev.702d52d

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/destroyable.d.ts +1 -0
  2. package/destroyable.lua +9 -0
  3. package/engine/behavior.d.ts +4 -2
  4. package/engine/behavior.lua +69 -11
  5. package/engine/behaviour/ability/apply-buff.lua +4 -4
  6. package/engine/behaviour/ability.d.ts +2 -1
  7. package/engine/behaviour/ability.lua +2 -1
  8. package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
  9. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  10. package/engine/behaviour/unit.d.ts +1 -0
  11. package/engine/behaviour/unit.lua +15 -3
  12. package/engine/buff.d.ts +9 -3
  13. package/engine/buff.lua +62 -34
  14. package/engine/internal/mechanics/cast-ability.lua +6 -3
  15. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  16. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  17. package/engine/internal/unit/attributes.d.ts +17 -0
  18. package/engine/internal/unit/attributes.lua +46 -0
  19. package/engine/internal/unit/bonus.d.ts +2 -0
  20. package/engine/internal/unit/bonus.lua +10 -0
  21. package/engine/internal/unit/fly-height.lua +3 -3
  22. package/engine/internal/unit/interrupts.d.ts +12 -0
  23. package/engine/internal/unit/interrupts.lua +28 -0
  24. package/engine/internal/unit/scale.lua +3 -3
  25. package/engine/internal/unit-missile-launch.lua +12 -5
  26. package/engine/internal/unit.d.ts +1 -8
  27. package/engine/internal/unit.lua +70 -91
  28. package/engine/local-client.d.ts +1 -1
  29. package/engine/local-client.lua +4 -4
  30. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  31. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  32. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  33. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  34. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  35. package/engine/object-data/entry/destructible-type.lua +155 -0
  36. package/engine/object-data/entry/unit-type.d.ts +4 -0
  37. package/engine/object-data/entry/unit-type.lua +76 -32
  38. package/engine/object-field/unit.d.ts +7 -4
  39. package/engine/object-field/unit.lua +4 -0
  40. package/engine/object-field.d.ts +2 -0
  41. package/engine/object-field.lua +171 -115
  42. package/engine/standard/fields/ability.d.ts +2 -2
  43. package/engine/standard/fields/ability.lua +2 -2
  44. package/engine/standard/fields/unit.d.ts +11 -5
  45. package/engine/standard/fields/unit.lua +13 -4
  46. package/engine/unit.d.ts +2 -0
  47. package/engine/unit.lua +2 -0
  48. package/objutil/buff.lua +9 -7
  49. package/package.json +2 -2
  50. package/patch-lua.lua +15 -0
  51. package/utility/linked-map.d.ts +26 -0
  52. package/utility/linked-map.lua +66 -0
  53. package/utility/linked-set.lua +4 -0
  54. package/utility/records.lua +20 -1
@@ -11,6 +11,8 @@ local ____entry = require("engine.object-data.entry")
11
11
  local ObjectDataEntry = ____entry.ObjectDataEntry
12
12
  local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
13
13
  local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.ObjectDataEntryIdGenerator
14
+ local ____reflection = require("utility.reflection")
15
+ local implementReadonlyNumberIndexSupplier = ____reflection.implementReadonlyNumberIndexSupplier
14
16
  ____exports.DestructibleType = __TS__Class()
15
17
  local DestructibleType = ____exports.DestructibleType
16
18
  DestructibleType.name = "DestructibleType"
@@ -25,6 +27,84 @@ DestructibleType.idGenerator = __TS__New(
25
27
  ObjectDataEntryIdGenerator,
26
28
  fourCC("D000")
27
29
  )
30
+ __TS__SetDescriptor(
31
+ DestructibleType.prototype,
32
+ "fixedFacing",
33
+ {
34
+ get = function(self)
35
+ return self:getNumberField("bfxr")
36
+ end,
37
+ set = function(self, fixedFacing)
38
+ self:setNumberField("bfxr", fixedFacing)
39
+ end
40
+ },
41
+ true
42
+ )
43
+ __TS__SetDescriptor(
44
+ DestructibleType.prototype,
45
+ "flyOverHeight",
46
+ {
47
+ get = function(self)
48
+ return self:getNumberField("bflh")
49
+ end,
50
+ set = function(self, flyOverHeight)
51
+ self:setNumberField("bflh", flyOverHeight)
52
+ end
53
+ },
54
+ true
55
+ )
56
+ __TS__SetDescriptor(
57
+ DestructibleType.prototype,
58
+ "modelPath",
59
+ {
60
+ get = function(self)
61
+ return self:getStringField("bfil")
62
+ end,
63
+ set = function(self, modelPath)
64
+ self:setStringField("bfil", modelPath)
65
+ end
66
+ },
67
+ true
68
+ )
69
+ __TS__SetDescriptor(
70
+ DestructibleType.prototype,
71
+ "modelPathSD",
72
+ {
73
+ get = function(self)
74
+ return self:getStringField("bfil:sd")
75
+ end,
76
+ set = function(self, modelPathSD)
77
+ self:setStringField("bfil:sd", modelPathSD)
78
+ end
79
+ },
80
+ true
81
+ )
82
+ __TS__SetDescriptor(
83
+ DestructibleType.prototype,
84
+ "modelPathHD",
85
+ {
86
+ get = function(self)
87
+ return self:getStringField("bfil:hd")
88
+ end,
89
+ set = function(self, modelPathHD)
90
+ self:setStringField("bfil:hd", modelPathHD)
91
+ end
92
+ },
93
+ true
94
+ )
95
+ __TS__SetDescriptor(
96
+ DestructibleType.prototype,
97
+ "occlusionHeight",
98
+ {
99
+ get = function(self)
100
+ return self:getNumberField("boch")
101
+ end,
102
+ set = function(self, occlusionHeight)
103
+ self:setNumberField("boch", occlusionHeight)
104
+ end
105
+ },
106
+ true
107
+ )
28
108
  __TS__SetDescriptor(
29
109
  DestructibleType.prototype,
30
110
  "armorSoundType",
@@ -80,4 +160,79 @@ __TS__SetDescriptor(
80
160
  },
81
161
  true
82
162
  )
163
+ __TS__SetDescriptor(
164
+ DestructibleType.prototype,
165
+ "cliffHeight",
166
+ {
167
+ get = function(self)
168
+ return self:getNumberField("bclh")
169
+ end,
170
+ set = function(self, cliffHeight)
171
+ self:setNumberField("bclh", cliffHeight)
172
+ end
173
+ },
174
+ true
175
+ )
176
+ __TS__SetDescriptor(
177
+ DestructibleType.prototype,
178
+ "isWalkable",
179
+ {
180
+ get = function(self)
181
+ return self:getBooleanField("bwal")
182
+ end,
183
+ set = function(self, isWalkable)
184
+ self:setBooleanField("bwal", isWalkable)
185
+ end
186
+ },
187
+ true
188
+ )
189
+ __TS__SetDescriptor(
190
+ DestructibleType.prototype,
191
+ "pathingTexturePath",
192
+ {
193
+ get = function(self)
194
+ return self:getStringField("bptx")
195
+ end,
196
+ set = function(self, pathingTexturePath)
197
+ self:setStringField("bptx", pathingTexturePath)
198
+ end
199
+ },
200
+ true
201
+ )
202
+ __TS__SetDescriptor(
203
+ DestructibleType.prototype,
204
+ "deadPathingTexturePath",
205
+ {
206
+ get = function(self)
207
+ return self:getStringField("bptd")
208
+ end,
209
+ set = function(self, deadPathingTexturePath)
210
+ self:setStringField("bptd", deadPathingTexturePath)
211
+ end
212
+ },
213
+ true
214
+ )
215
+ __TS__SetDescriptor(
216
+ DestructibleType.prototype,
217
+ "name",
218
+ {
219
+ get = function(self)
220
+ return self:getStringField("bnam")
221
+ end,
222
+ set = function(self, name)
223
+ self:setStringField("bnam", name)
224
+ end
225
+ },
226
+ true
227
+ )
228
+ implementReadonlyNumberIndexSupplier(
229
+ ____exports.DestructibleType,
230
+ function(id)
231
+ local ____class_0 = __TS__Class()
232
+ ____class_0.name = ____class_0.name
233
+ __TS__ClassExtends(____class_0, ____exports.DestructibleType)
234
+ ____class_0.BASE_ID = id
235
+ return ____class_0
236
+ end
237
+ )
83
238
  return ____exports
@@ -42,6 +42,10 @@ export declare class UnitTypeWeapon {
42
42
  set impactDelay(impactDelay: number);
43
43
  get missileModelPath(): string;
44
44
  set missileModelPath(missileModelPath: string);
45
+ get missileModelPathSD(): string;
46
+ set missileModelPathSD(missileModelPathSD: string);
47
+ get missileModelPathHD(): string;
48
+ set missileModelPathHD(missileModelPathHD: string);
45
49
  get range(): number;
46
50
  set range(range: number);
47
51
  get soundType(): WeaponSoundType;
@@ -238,21 +238,21 @@ __TS__SetDescriptor(
238
238
  )
239
239
  __TS__SetDescriptor(
240
240
  UnitTypeWeapon.prototype,
241
- "range",
241
+ "missileModelPathSD",
242
242
  {
243
243
  get = function(self)
244
244
  local ____self_17 = self.unitType
245
- return ____self_17.getNumberField(
245
+ return ____self_17.getStringField(
246
246
  ____self_17,
247
- ("ua" .. tostring(self.index)) .. "r"
247
+ ("ua" .. tostring(self.index)) .. "m:sd"
248
248
  )
249
249
  end,
250
- set = function(self, range)
250
+ set = function(self, missileModelPathSD)
251
251
  local ____self_18 = self.unitType
252
- ____self_18.setNumberField(
252
+ ____self_18.setStringField(
253
253
  ____self_18,
254
- ("ua" .. tostring(self.index)) .. "r",
255
- range
254
+ ("ua" .. tostring(self.index)) .. "m:sd",
255
+ missileModelPathSD
256
256
  )
257
257
  end
258
258
  },
@@ -260,21 +260,21 @@ __TS__SetDescriptor(
260
260
  )
261
261
  __TS__SetDescriptor(
262
262
  UnitTypeWeapon.prototype,
263
- "soundType",
263
+ "missileModelPathHD",
264
264
  {
265
265
  get = function(self)
266
266
  local ____self_19 = self.unitType
267
267
  return ____self_19.getStringField(
268
268
  ____self_19,
269
- "ucs" .. tostring(self.index)
269
+ ("ua" .. tostring(self.index)) .. "m:hd"
270
270
  )
271
271
  end,
272
- set = function(self, soundType)
272
+ set = function(self, missileModelPathHD)
273
273
  local ____self_20 = self.unitType
274
274
  ____self_20.setStringField(
275
275
  ____self_20,
276
- "ucs" .. tostring(self.index),
277
- soundType
276
+ ("ua" .. tostring(self.index)) .. "m:hd",
277
+ missileModelPathHD
278
278
  )
279
279
  end
280
280
  },
@@ -282,21 +282,21 @@ __TS__SetDescriptor(
282
282
  )
283
283
  __TS__SetDescriptor(
284
284
  UnitTypeWeapon.prototype,
285
- "soundTypeSD",
285
+ "range",
286
286
  {
287
287
  get = function(self)
288
288
  local ____self_21 = self.unitType
289
- return ____self_21.getStringField(
289
+ return ____self_21.getNumberField(
290
290
  ____self_21,
291
- ("ucs" .. tostring(self.index)) .. ":sd"
291
+ ("ua" .. tostring(self.index)) .. "r"
292
292
  )
293
293
  end,
294
- set = function(self, soundTypeSD)
294
+ set = function(self, range)
295
295
  local ____self_22 = self.unitType
296
- ____self_22.setStringField(
296
+ ____self_22.setNumberField(
297
297
  ____self_22,
298
- ("ucs" .. tostring(self.index)) .. ":sd",
299
- soundTypeSD
298
+ ("ua" .. tostring(self.index)) .. "r",
299
+ range
300
300
  )
301
301
  end
302
302
  },
@@ -304,19 +304,63 @@ __TS__SetDescriptor(
304
304
  )
305
305
  __TS__SetDescriptor(
306
306
  UnitTypeWeapon.prototype,
307
- "soundTypeHD",
307
+ "soundType",
308
308
  {
309
309
  get = function(self)
310
310
  local ____self_23 = self.unitType
311
311
  return ____self_23.getStringField(
312
312
  ____self_23,
313
- ("ucs" .. tostring(self.index)) .. ":hd"
313
+ "ucs" .. tostring(self.index)
314
314
  )
315
315
  end,
316
- set = function(self, soundTypeHD)
316
+ set = function(self, soundType)
317
317
  local ____self_24 = self.unitType
318
318
  ____self_24.setStringField(
319
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,
320
364
  ("ucs" .. tostring(self.index)) .. ":hd",
321
365
  soundTypeHD
322
366
  )
@@ -1680,11 +1724,11 @@ __TS__SetDescriptor(
1680
1724
  implementReadonlyNumberIndexSupplier(
1681
1725
  ____exports.UnitType,
1682
1726
  function(id)
1683
- local ____class_25 = __TS__Class()
1684
- ____class_25.name = ____class_25.name
1685
- __TS__ClassExtends(____class_25, ____exports.UnitType)
1686
- ____class_25.BASE_ID = id
1687
- 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
1688
1732
  end
1689
1733
  )
1690
1734
  ____exports.HeroUnitType = __TS__Class()
@@ -1745,11 +1789,11 @@ __TS__SetDescriptor(
1745
1789
  implementReadonlyNumberIndexSupplier(
1746
1790
  ____exports.HeroUnitType,
1747
1791
  function(id)
1748
- local ____class_26 = __TS__Class()
1749
- ____class_26.name = ____class_26.name
1750
- __TS__ClassExtends(____class_26, ____exports.HeroUnitType)
1751
- ____class_26.BASE_ID = id
1752
- 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
1753
1797
  end
1754
1798
  )
1755
1799
  return ____exports
@@ -5,6 +5,7 @@ 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
7
  import { UnitClassifications } from "../object-data/auxiliary/unit-classification";
8
+ import { HealthRegenerationType } from "../object-data/auxiliary/health-regeneration-type";
8
9
  export declare abstract class UnitField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = any> extends ObjectField<UnitType, Unit, ValueType, NativeFieldType> {
9
10
  protected get instanceClass(): typeof Unit;
10
11
  protected getObjectDataEntryId(instance: Unit): UnitTypeId;
@@ -25,11 +26,11 @@ export declare class UnitFloatField extends UnitField<number, junitrealfield> {
25
26
  protected setNativeFieldValue(instance: Unit, value: number): boolean;
26
27
  static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitFloatField>>;
27
28
  }
28
- export declare class UnitIntegerField extends UnitField<number, junitintegerfield> {
29
- protected get defaultValue(): number;
29
+ export declare class UnitIntegerField<T extends number = number> extends UnitField<T, junitintegerfield> {
30
+ protected get defaultValue(): T;
30
31
  protected getNativeFieldById(id: number): junitintegerfield;
31
- protected getNativeFieldValue(instance: Unit): number;
32
- protected setNativeFieldValue(instance: Unit, value: number): boolean;
32
+ protected getNativeFieldValue(instance: Unit): T;
33
+ protected setNativeFieldValue(instance: Unit, value: T): boolean;
33
34
  static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitIntegerField>>;
34
35
  }
35
36
  export declare class UnitStringField extends UnitField<string, junitstringfield> {
@@ -76,6 +77,8 @@ export declare class UnitPropulsionWindowField extends UnitFloatField {
76
77
  protected getNativeFieldValue(instance: Unit): number;
77
78
  protected setNativeFieldValue(instance: Unit, value: number): boolean;
78
79
  }
80
+ export declare class UnitHealthRegenerationTypeField extends UnitIntegerField<HealthRegenerationType> {
81
+ }
79
82
  export declare class UnitScalingValueField extends UnitFloatField {
80
83
  protected setNativeFieldValue(instance: Unit, value: number): boolean;
81
84
  }
@@ -298,6 +298,10 @@ function UnitPropulsionWindowField.prototype.setNativeFieldValue(self, instance,
298
298
  setUnitPropulsionWindow(instance.handle, value)
299
299
  return true
300
300
  end
301
+ ____exports.UnitHealthRegenerationTypeField = __TS__Class()
302
+ local UnitHealthRegenerationTypeField = ____exports.UnitHealthRegenerationTypeField
303
+ UnitHealthRegenerationTypeField.name = "UnitHealthRegenerationTypeField"
304
+ __TS__ClassExtends(UnitHealthRegenerationTypeField, ____exports.UnitIntegerField)
301
305
  ____exports.UnitScalingValueField = __TS__Class()
302
306
  local UnitScalingValueField = ____exports.UnitScalingValueField
303
307
  UnitScalingValueField.name = "UnitScalingValueField"
@@ -46,6 +46,7 @@ export declare abstract class ObjectField<ObjectDataEntryType extends ObjectData
46
46
  private modifiersByInstance?;
47
47
  getValue(entry: ObjectDataEntryType | InstanceType, includeModifiers?: boolean): ValueType;
48
48
  setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType): boolean;
49
+ updateActualValue(instance: InstanceType): void;
49
50
  applyModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): void;
50
51
  removeModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): boolean;
51
52
  removeValue(entry: ObjectDataEntryType): boolean;
@@ -89,6 +90,7 @@ export declare abstract class ObjectLevelField<ObjectDataEntryType extends Objec
89
90
  protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
90
91
  getValue<LevelType extends [number] | []>(entry: ObjectDataEntryType | InstanceType, ...[level]: LevelType): LevelType extends [number] ? ValueType : ValueType[];
91
92
  setValue(entry: ObjectDataEntryType | InstanceType, ...[levelOrValue, value]: [value: ObjectDataEntryLevelFieldValueSupplier<InputValueType, ValueType>] | [level: number, value: InputValueType]): boolean;
93
+ updateActualValue(instance: InstanceType, level?: number): void;
92
94
  applyModifier(instance: InstanceType, modifier: ObjectLevelFieldModifier<InstanceType, ValueType>): void;
93
95
  removeModifier(instance: InstanceType, modifier: ObjectLevelFieldModifier<InstanceType, ValueType>): boolean;
94
96
  trySetValue(entry: ObjectDataEntryType | InstanceType, levelOrValue: number | unknown, value?: unknown): boolean;