warscript 0.0.1-dev.f0a9ffe → 0.0.1-dev.f0daa48

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 (132) hide show
  1. package/attributes.d.ts +1 -0
  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/sound.lua +1 -1
  9. package/core/types/tileCell.d.ts +11 -1
  10. package/core/types/tileCell.lua +97 -0
  11. package/core/types/timer.d.ts +3 -2
  12. package/core/types/timer.lua +22 -2
  13. package/decl/native.d.ts +2 -2
  14. package/destroyable.d.ts +1 -0
  15. package/destroyable.lua +9 -0
  16. package/engine/behavior.d.ts +12 -1
  17. package/engine/behavior.lua +199 -65
  18. package/engine/behaviour/ability/apply-buff.lua +4 -4
  19. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  20. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  21. package/engine/behaviour/ability.d.ts +11 -6
  22. package/engine/behaviour/ability.lua +31 -1
  23. package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
  24. package/engine/behaviour/unit/stun-immunity.lua +17 -7
  25. package/engine/behaviour/unit.d.ts +15 -5
  26. package/engine/behaviour/unit.lua +126 -22
  27. package/engine/buff.d.ts +64 -21
  28. package/engine/buff.lua +360 -178
  29. package/engine/internal/ability.d.ts +3 -1
  30. package/engine/internal/ability.lua +26 -9
  31. package/engine/internal/item+owner.lua +12 -6
  32. package/engine/internal/item.d.ts +13 -15
  33. package/engine/internal/item.lua +63 -49
  34. package/engine/internal/mechanics/cast-ability.lua +6 -3
  35. package/engine/internal/misc/frame-coordinates.lua +21 -0
  36. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  37. package/engine/internal/misc/get-terrain-z.lua +11 -0
  38. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  39. package/engine/internal/misc/player-local-handle.lua +5 -0
  40. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  41. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  42. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  43. package/engine/internal/object-data/health-bonus.lua +16 -0
  44. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  45. package/engine/internal/object-data/mana-bonus.lua +16 -0
  46. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  47. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  48. package/engine/internal/unit/ability.d.ts +14 -14
  49. package/engine/internal/unit/ability.lua +72 -45
  50. package/engine/internal/unit/attributes.d.ts +17 -0
  51. package/engine/internal/unit/attributes.lua +46 -0
  52. package/engine/internal/unit/bonus.d.ts +6 -0
  53. package/engine/internal/unit/bonus.lua +33 -3
  54. package/engine/internal/unit/fly-height.d.ts +7 -0
  55. package/engine/internal/unit/fly-height.lua +20 -0
  56. package/engine/internal/unit/interrupts.d.ts +12 -0
  57. package/engine/internal/unit/interrupts.lua +28 -0
  58. package/engine/internal/unit/item.lua +1 -1
  59. package/engine/internal/unit/main-selected.lua +12 -27
  60. package/engine/internal/unit/range-event.d.ts +12 -0
  61. package/engine/internal/unit/range-event.lua +90 -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+bonus.lua +3 -3
  66. package/engine/internal/unit-missile-launch.lua +51 -20
  67. package/engine/internal/unit.d.ts +18 -22
  68. package/engine/internal/unit.lua +179 -200
  69. package/engine/local-client.d.ts +2 -0
  70. package/engine/local-client.lua +30 -0
  71. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  72. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  73. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  74. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  75. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  76. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  77. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  78. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  79. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  80. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  81. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  82. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  83. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  84. package/engine/object-data/entry/ability-type.d.ts +2 -0
  85. package/engine/object-data/entry/ability-type.lua +88 -5
  86. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  87. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  88. package/engine/object-data/entry/destructible-type.lua +155 -0
  89. package/engine/object-data/entry/unit-type.d.ts +4 -0
  90. package/engine/object-data/entry/unit-type.lua +76 -32
  91. package/engine/object-field/ability.d.ts +3 -3
  92. package/engine/object-field/ability.lua +9 -8
  93. package/engine/object-field/unit.d.ts +20 -5
  94. package/engine/object-field/unit.lua +61 -0
  95. package/engine/object-field.d.ts +12 -4
  96. package/engine/object-field.lua +273 -126
  97. package/engine/random.d.ts +10 -0
  98. package/engine/random.lua +21 -0
  99. package/engine/standard/fields/ability.d.ts +2 -2
  100. package/engine/standard/fields/ability.lua +2 -2
  101. package/engine/standard/fields/unit.d.ts +11 -3
  102. package/engine/standard/fields/unit.lua +15 -2
  103. package/engine/synchronization.d.ts +11 -0
  104. package/engine/synchronization.lua +77 -0
  105. package/engine/text-tag.d.ts +1 -1
  106. package/engine/text-tag.lua +92 -17
  107. package/engine/unit.d.ts +5 -0
  108. package/engine/unit.lua +5 -0
  109. package/lualib_bundle.lua +118 -47
  110. package/net/socket.lua +1 -1
  111. package/objutil/buff.lua +10 -8
  112. package/objutil/object.lua +1 -1
  113. package/operation.lua +23 -17
  114. package/package.json +5 -5
  115. package/patch-lua.lua +15 -0
  116. package/patch-lualib.lua +1 -1
  117. package/utility/arrays.d.ts +1 -0
  118. package/utility/arrays.lua +8 -0
  119. package/utility/callback-array.d.ts +17 -0
  120. package/utility/callback-array.lua +61 -0
  121. package/utility/linked-map.d.ts +34 -0
  122. package/utility/linked-map.lua +101 -0
  123. package/utility/linked-set.d.ts +3 -1
  124. package/utility/linked-set.lua +40 -1
  125. package/utility/lua-maps.d.ts +11 -2
  126. package/utility/lua-maps.lua +33 -2
  127. package/utility/records.lua +20 -1
  128. package/utility/types.d.ts +3 -0
  129. /package/engine/internal/{object-data/armor-increase.d.ts → misc/frame-coordinates.d.ts} +0 -0
  130. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  131. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  132. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -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,
@@ -518,9 +519,9 @@ __TS__SetDescriptor(
518
519
  )
519
520
  ____exports.resolveCurrentAbilityDependentValue = function(ability, value)
520
521
  if __TS__InstanceOf(value, ____exports.AbilityField) then
521
- return value:getValue(ability)
522
+ return value:getValue(ability, true)
522
523
  elseif __TS__InstanceOf(value, ____exports.AbilityLevelField) then
523
- return value:getValue(ability, ability.level)
524
+ return value:getValue(ability, ability.level, true)
524
525
  elseif type(value) == "function" then
525
526
  return value(ability)
526
527
  else
@@ -1,38 +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
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;
11
12
  protected hasNativeFieldValue(): boolean;
13
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitField>>;
12
14
  }
13
15
  export declare class UnitBooleanField extends UnitField<boolean, junitbooleanfield> {
14
16
  protected get defaultValue(): boolean;
15
17
  protected getNativeFieldById(id: number): junitbooleanfield;
16
18
  protected getNativeFieldValue(instance: Unit): boolean;
17
19
  protected setNativeFieldValue(instance: Unit, value: boolean): boolean;
20
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitBooleanField>>;
18
21
  }
19
22
  export declare class UnitFloatField extends UnitField<number, junitrealfield> {
20
23
  protected get defaultValue(): number;
21
24
  protected getNativeFieldById(id: number): junitrealfield;
22
25
  protected getNativeFieldValue(instance: Unit): number;
23
26
  protected setNativeFieldValue(instance: Unit, value: number): boolean;
27
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitFloatField>>;
24
28
  }
25
- export declare class UnitIntegerField extends UnitField<number, junitintegerfield> {
26
- protected get defaultValue(): number;
29
+ export declare class UnitIntegerField<T extends number = number> extends UnitField<T, junitintegerfield> {
30
+ protected get defaultValue(): T;
27
31
  protected getNativeFieldById(id: number): junitintegerfield;
28
- protected getNativeFieldValue(instance: Unit): number;
29
- 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>>;
30
35
  }
31
36
  export declare class UnitStringField extends UnitField<string, junitstringfield> {
32
37
  protected get defaultValue(): string;
33
38
  protected getNativeFieldById(id: number): junitstringfield;
34
39
  protected getNativeFieldValue(instance: Unit): string;
35
40
  protected setNativeFieldValue(instance: Unit, value: string): boolean;
41
+ static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitStringField>>;
36
42
  }
37
43
  type junitweaponfield = junitweaponbooleanfield | junitweaponintegerfield | junitweaponrealfield | junitweaponstringfield;
38
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> {
@@ -63,8 +69,17 @@ export declare class UnitClassificationsField extends UnitField<UnitClassificati
63
69
  protected getNativeFieldValue(instance: Unit): UnitClassifications;
64
70
  protected setNativeFieldValue(instance: Unit, value: UnitClassifications): boolean;
65
71
  }
72
+ export declare class UnitFlyHeightField extends UnitFloatField {
73
+ protected getNativeFieldValue(instance: Unit): number;
74
+ protected setNativeFieldValue(instance: Unit, value: number): boolean;
75
+ }
66
76
  export declare class UnitPropulsionWindowField extends UnitFloatField {
67
77
  protected getNativeFieldValue(instance: Unit): number;
68
78
  protected setNativeFieldValue(instance: Unit, value: number): boolean;
69
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
+ }
70
85
  export {};
@@ -18,8 +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
21
23
  local getUnitPropulsionWindow = GetUnitPropWindow
22
24
  local setUnitPropulsionWindow = SetUnitPropWindow
25
+ local setUnitScale = SetUnitScale
23
26
  ____exports.UnitField = __TS__Class()
24
27
  local UnitField = ____exports.UnitField
25
28
  UnitField.name = "UnitField"
@@ -38,6 +41,13 @@ __TS__SetDescriptor(
38
41
  end},
39
42
  true
40
43
  )
44
+ __TS__ObjectDefineProperty(
45
+ UnitField,
46
+ "valueChangeEvent",
47
+ {get = function(self)
48
+ return self:getOrCreateValueChangeEvent()
49
+ end}
50
+ )
41
51
  ____exports.UnitBooleanField = __TS__Class()
42
52
  local UnitBooleanField = ____exports.UnitBooleanField
43
53
  UnitBooleanField.name = "UnitBooleanField"
@@ -59,6 +69,13 @@ __TS__SetDescriptor(
59
69
  end},
60
70
  true
61
71
  )
72
+ __TS__ObjectDefineProperty(
73
+ UnitBooleanField,
74
+ "valueChangeEvent",
75
+ {get = function(self)
76
+ return self:getOrCreateValueChangeEvent()
77
+ end}
78
+ )
62
79
  ____exports.UnitFloatField = __TS__Class()
63
80
  local UnitFloatField = ____exports.UnitFloatField
64
81
  UnitFloatField.name = "UnitFloatField"
@@ -80,6 +97,13 @@ __TS__SetDescriptor(
80
97
  end},
81
98
  true
82
99
  )
100
+ __TS__ObjectDefineProperty(
101
+ UnitFloatField,
102
+ "valueChangeEvent",
103
+ {get = function(self)
104
+ return self:getOrCreateValueChangeEvent()
105
+ end}
106
+ )
83
107
  ____exports.UnitIntegerField = __TS__Class()
84
108
  local UnitIntegerField = ____exports.UnitIntegerField
85
109
  UnitIntegerField.name = "UnitIntegerField"
@@ -101,6 +125,13 @@ __TS__SetDescriptor(
101
125
  end},
102
126
  true
103
127
  )
128
+ __TS__ObjectDefineProperty(
129
+ UnitIntegerField,
130
+ "valueChangeEvent",
131
+ {get = function(self)
132
+ return self:getOrCreateValueChangeEvent()
133
+ end}
134
+ )
104
135
  ____exports.UnitStringField = __TS__Class()
105
136
  local UnitStringField = ____exports.UnitStringField
106
137
  UnitStringField.name = "UnitStringField"
@@ -122,6 +153,13 @@ __TS__SetDescriptor(
122
153
  end},
123
154
  true
124
155
  )
156
+ __TS__ObjectDefineProperty(
157
+ UnitStringField,
158
+ "valueChangeEvent",
159
+ {get = function(self)
160
+ return self:getOrCreateValueChangeEvent()
161
+ end}
162
+ )
125
163
  ____exports.UnitWeaponField = __TS__Class()
126
164
  local UnitWeaponField = ____exports.UnitWeaponField
127
165
  UnitWeaponField.name = "UnitWeaponField"
@@ -238,6 +276,17 @@ __TS__SetDescriptor(
238
276
  end},
239
277
  true
240
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
241
290
  ____exports.UnitPropulsionWindowField = __TS__Class()
242
291
  local UnitPropulsionWindowField = ____exports.UnitPropulsionWindowField
243
292
  UnitPropulsionWindowField.name = "UnitPropulsionWindowField"
@@ -249,4 +298,16 @@ function UnitPropulsionWindowField.prototype.setNativeFieldValue(self, instance,
249
298
  setUnitPropulsionWindow(instance.handle, value)
250
299
  return true
251
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
252
313
  return ____exports
@@ -17,8 +17,8 @@ declare abstract class ObjectFieldBase<ObjectDataEntryType extends ObjectDataEnt
17
17
  readonly id: ObjectFieldId;
18
18
  protected abstract getNativeFieldById(id: number): NativeFieldType;
19
19
  protected abstract getObjectDataEntryId(instance: InstanceType): ObjectDataEntryIdType<ObjectDataEntryType>;
20
- protected abstract hasNativeFieldValue(instance: InstanceType): boolean;
21
- hasValue(instance: InstanceType): boolean;
20
+ protected abstract hasNativeFieldValue(objectDataEntryId: ObjectDataEntryIdType<ObjectDataEntryType>): boolean;
21
+ hasValue(objectDataEntryId: ObjectDataEntryIdType<ObjectDataEntryType>): boolean;
22
22
  constructor(id: number, isGlobal?: boolean);
23
23
  static create<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldConstructor<T>, id?: number, isGlobal?: boolean): T & symbol;
24
24
  static of<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldAbstractConstructor<T>, id: number): T | undefined;
@@ -36,7 +36,8 @@ export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any
36
36
  ]> : never;
37
37
  export type ReadonlyObjectFieldType<T extends ObjectField<any, any, any, any>> = Omit<T, "setValue" | "removeValue" | "trySetValue">;
38
38
  type ReadonlyObjectFieldConstructor<T extends ObjectField> = OmitConstructor<typeof ObjectField> & (abstract new (...args: any[]) => ReadonlyObjectFieldType<T>);
39
- 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;
40
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> {
41
42
  protected abstract readonly defaultValue: ValueType;
42
43
  protected abstract getNativeFieldValue(instance: InstanceType): ValueType;
@@ -45,6 +46,7 @@ export declare abstract class ObjectField<ObjectDataEntryType extends ObjectData
45
46
  private modifiersByInstance?;
46
47
  getValue(entry: ObjectDataEntryType | InstanceType, includeModifiers?: boolean): ValueType;
47
48
  setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType): boolean;
49
+ updateActualValue(instance: InstanceType): void;
48
50
  applyModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): void;
49
51
  removeModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): boolean;
50
52
  removeValue(entry: ObjectDataEntryType): boolean;
@@ -86,9 +88,15 @@ export declare abstract class ObjectLevelField<ObjectDataEntryType extends Objec
86
88
  protected abstract getNativeFieldValue(instance: InstanceType, level: number): ValueType;
87
89
  protected abstract setNativeFieldValue(instance: InstanceType, level: number, value: ValueType): boolean;
88
90
  protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
89
- getValue<LevelType extends [number] | []>(entry: ObjectDataEntryType | InstanceType, ...[level]: LevelType): LevelType extends [number] ? ValueType : ValueType[];
91
+ getValue<LevelType extends [number, boolean?] | [boolean?]>(entry: ObjectDataEntryType | InstanceType, ...[level, includeModifiers]: LevelType): LevelType extends [number, boolean?] ? ValueType : ValueType[];
90
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;
91
96
  trySetValue(entry: ObjectDataEntryType | InstanceType, levelOrValue: number | unknown, value?: unknown): boolean;
97
+ private getActualValue;
98
+ private setActualValue;
99
+ private calculateActualValue;
92
100
  private invokeValueChangeEvent;
93
101
  private invokeValueChangeEventRecursive;
94
102
  protected static getOrCreateValueChangeEvent<T extends ObjectLevelField, R extends ReadonlyObjectLevelFieldType<T>>(this: ReadonlyObjectLevelFieldConstructor<T>): ObjectLevelFieldValueChangeEvent<R>;