warscript 0.0.1-dev.ff5dbcd → 0.0.1-dev.fff719b

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 (170) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/core/types/effect.d.ts +1 -3
  4. package/core/types/effect.lua +26 -29
  5. package/core/types/frame.lua +24 -21
  6. package/core/types/player.d.ts +16 -0
  7. package/core/types/player.lua +60 -15
  8. package/core/types/playerCamera.d.ts +2 -0
  9. package/core/types/playerCamera.lua +123 -5
  10. package/core/types/sound.d.ts +17 -25
  11. package/core/types/sound.lua +85 -44
  12. package/core/types/tileCell.d.ts +11 -1
  13. package/core/types/tileCell.lua +97 -0
  14. package/core/types/timer.d.ts +9 -8
  15. package/core/types/timer.lua +45 -23
  16. package/decl/native.d.ts +846 -790
  17. package/destroyable.d.ts +1 -0
  18. package/destroyable.lua +9 -0
  19. package/engine/behavior.d.ts +14 -1
  20. package/engine/behavior.lua +230 -70
  21. package/engine/behaviour/ability/apply-buff.lua +5 -5
  22. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  23. package/engine/behaviour/ability/damage.d.ts +9 -3
  24. package/engine/behaviour/ability/damage.lua +26 -38
  25. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  26. package/engine/behaviour/ability/emulate-impact.lua +18 -3
  27. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  28. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  29. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  30. package/engine/behaviour/ability/restore-mana.lua +6 -6
  31. package/engine/behaviour/ability.d.ts +7 -2
  32. package/engine/behaviour/ability.lua +28 -22
  33. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  34. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  35. package/engine/behaviour/unit.d.ts +40 -2
  36. package/engine/behaviour/unit.lua +269 -6
  37. package/engine/buff.d.ts +32 -14
  38. package/engine/buff.lua +249 -152
  39. package/engine/internal/ability.d.ts +7 -1
  40. package/engine/internal/ability.lua +49 -9
  41. package/engine/internal/item/ability.lua +63 -11
  42. package/engine/internal/item+owner.lua +12 -6
  43. package/engine/internal/item.d.ts +18 -17
  44. package/engine/internal/item.lua +135 -49
  45. package/engine/internal/mechanics/ability-duration.lua +1 -1
  46. package/engine/internal/mechanics/cast-ability.lua +6 -3
  47. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  48. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  49. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  50. package/engine/internal/misc/frame-coordinates.lua +21 -0
  51. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  52. package/engine/internal/misc/get-terrain-z.lua +11 -0
  53. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  54. package/engine/internal/misc/player-local-handle.lua +5 -0
  55. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  56. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  57. package/engine/internal/unit/ability.d.ts +35 -0
  58. package/engine/internal/unit/ability.lua +98 -9
  59. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  60. package/engine/internal/unit/allowed-targets.lua +9 -1
  61. package/engine/internal/unit/attributes.d.ts +17 -0
  62. package/engine/internal/unit/attributes.lua +46 -0
  63. package/engine/internal/unit/bonus.d.ts +2 -0
  64. package/engine/internal/unit/bonus.lua +10 -0
  65. package/engine/internal/unit/fly-height.d.ts +7 -0
  66. package/engine/internal/unit/fly-height.lua +20 -0
  67. package/engine/internal/unit/interrupts.d.ts +12 -0
  68. package/engine/internal/unit/interrupts.lua +28 -0
  69. package/engine/internal/unit/main-selected.lua +12 -27
  70. package/engine/internal/unit/order.d.ts +20 -0
  71. package/engine/internal/unit/order.lua +136 -0
  72. package/engine/internal/unit/scale.d.ts +7 -0
  73. package/engine/internal/unit/scale.lua +20 -0
  74. package/engine/internal/unit+ability.lua +10 -1
  75. package/engine/internal/unit+damage.d.ts +2 -11
  76. package/engine/internal/unit+damage.lua +10 -14
  77. package/engine/internal/unit+spellSteal.lua +1 -2
  78. package/engine/internal/unit-missile-launch.lua +52 -14
  79. package/engine/internal/unit.d.ts +42 -24
  80. package/engine/internal/unit.lua +377 -232
  81. package/engine/local-client.d.ts +2 -0
  82. package/engine/local-client.lua +30 -0
  83. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  84. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  85. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  86. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  87. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  88. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  89. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  90. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  91. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  92. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  93. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  94. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  95. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  96. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  97. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  98. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  99. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  100. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  101. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  102. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  103. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  104. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  105. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  106. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  107. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  108. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  109. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  110. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  111. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  112. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  113. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  114. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  115. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  116. package/engine/object-data/entry/ability-type/web.lua +52 -0
  117. package/engine/object-data/entry/ability-type.d.ts +11 -11
  118. package/engine/object-data/entry/ability-type.lua +35 -13
  119. package/engine/object-data/entry/buff-type/applicable.lua +5 -0
  120. package/engine/object-data/entry/buff-type.d.ts +5 -11
  121. package/engine/object-data/entry/buff-type.lua +11 -27
  122. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  123. package/engine/object-data/entry/destructible-type.lua +155 -0
  124. package/engine/object-data/entry/sound-preset.d.ts +17 -0
  125. package/engine/object-data/entry/sound-preset.lua +104 -0
  126. package/engine/object-data/entry/unit-type.d.ts +17 -4
  127. package/engine/object-data/entry/unit-type.lua +197 -85
  128. package/engine/object-field/ability.d.ts +4 -4
  129. package/engine/object-field/ability.lua +7 -6
  130. package/engine/object-field/unit.d.ts +72 -3
  131. package/engine/object-field/unit.lua +268 -7
  132. package/engine/object-field.d.ts +25 -6
  133. package/engine/object-field.lua +357 -118
  134. package/engine/random.d.ts +9 -0
  135. package/engine/random.lua +13 -0
  136. package/engine/standard/entries/buff-type.d.ts +3 -0
  137. package/engine/standard/entries/buff-type.lua +3 -0
  138. package/engine/standard/fields/ability.d.ts +2 -2
  139. package/engine/standard/fields/ability.lua +2 -2
  140. package/engine/standard/fields/unit.d.ts +12 -0
  141. package/engine/standard/fields/unit.lua +20 -0
  142. package/engine/synchronization.d.ts +11 -0
  143. package/engine/synchronization.lua +77 -0
  144. package/engine/text-tag.d.ts +36 -2
  145. package/engine/text-tag.lua +250 -10
  146. package/engine/unit.d.ts +5 -0
  147. package/engine/unit.lua +5 -0
  148. package/net/socket.lua +1 -1
  149. package/objutil/buff.lua +11 -10
  150. package/package.json +2 -2
  151. package/patch-lua.lua +9 -0
  152. package/patch-lualib.lua +1 -1
  153. package/utility/arrays.d.ts +2 -0
  154. package/utility/arrays.lua +11 -0
  155. package/utility/callback-array.d.ts +17 -0
  156. package/utility/callback-array.lua +61 -0
  157. package/utility/functions.d.ts +8 -0
  158. package/utility/functions.lua +13 -0
  159. package/utility/linked-map.d.ts +26 -0
  160. package/utility/linked-map.lua +66 -0
  161. package/utility/linked-set.d.ts +2 -0
  162. package/utility/linked-set.lua +26 -1
  163. package/utility/lua-maps.d.ts +15 -2
  164. package/utility/lua-maps.lua +53 -2
  165. package/utility/lua-sets.d.ts +2 -0
  166. package/utility/lua-sets.lua +7 -0
  167. package/utility/records.lua +20 -1
  168. package/utility/types.d.ts +3 -0
  169. package/core/types/order.d.ts +0 -25
  170. package/core/types/order.lua +0 -55
@@ -2,11 +2,27 @@ local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
5
6
  local ____exports = {}
6
7
  local ____unit = require("engine.internal.unit")
7
8
  local Unit = ____unit.Unit
8
9
  local ____object_2Dfield = require("engine.object-field")
9
10
  local ObjectField = ____object_2Dfield.ObjectField
11
+ local ObjectLevelField = ____object_2Dfield.ObjectLevelField
12
+ local ____linked_2Dset = require("utility.linked-set")
13
+ local nonEmptyLinkedSetOf = ____linked_2Dset.nonEmptyLinkedSetOf
14
+ local convertUnitBooleanField = ConvertUnitBooleanField
15
+ local convertUnitIntegerField = ConvertUnitIntegerField
16
+ local convertUnitRealField = ConvertUnitRealField
17
+ local convertUnitStringField = ConvertUnitStringField
18
+ local convertUnitWeaponIntegerField = ConvertUnitWeaponIntegerField
19
+ local getUnitWeaponIntegerField = BlzGetUnitWeaponIntegerField
20
+ local setUnitWeaponIntegerField = BlzSetUnitWeaponIntegerField
21
+ local getUnitFlyHeight = GetUnitFlyHeight
22
+ local setUnitFlyHeight = SetUnitFlyHeight
23
+ local getUnitPropulsionWindow = GetUnitPropWindow
24
+ local setUnitPropulsionWindow = SetUnitPropWindow
25
+ local setUnitScale = SetUnitScale
10
26
  ____exports.UnitField = __TS__Class()
11
27
  local UnitField = ____exports.UnitField
12
28
  UnitField.name = "UnitField"
@@ -14,6 +30,9 @@ __TS__ClassExtends(UnitField, ObjectField)
14
30
  function UnitField.prototype.getObjectDataEntryId(self, instance)
15
31
  return instance.typeId
16
32
  end
33
+ function UnitField.prototype.hasNativeFieldValue(self)
34
+ return true
35
+ end
17
36
  __TS__SetDescriptor(
18
37
  UnitField.prototype,
19
38
  "instanceClass",
@@ -22,22 +41,107 @@ __TS__SetDescriptor(
22
41
  end},
23
42
  true
24
43
  )
44
+ __TS__ObjectDefineProperty(
45
+ UnitField,
46
+ "valueChangeEvent",
47
+ {get = function(self)
48
+ return self:getOrCreateValueChangeEvent()
49
+ end}
50
+ )
51
+ ____exports.UnitBooleanField = __TS__Class()
52
+ local UnitBooleanField = ____exports.UnitBooleanField
53
+ UnitBooleanField.name = "UnitBooleanField"
54
+ __TS__ClassExtends(UnitBooleanField, ____exports.UnitField)
55
+ function UnitBooleanField.prototype.getNativeFieldById(self, id)
56
+ return convertUnitBooleanField(id)
57
+ end
58
+ function UnitBooleanField.prototype.getNativeFieldValue(self, instance)
59
+ return instance:getField(self.nativeField)
60
+ end
61
+ function UnitBooleanField.prototype.setNativeFieldValue(self, instance, value)
62
+ return instance:setField(self.nativeField, value)
63
+ end
64
+ __TS__SetDescriptor(
65
+ UnitBooleanField.prototype,
66
+ "defaultValue",
67
+ {get = function(self)
68
+ return false
69
+ end},
70
+ true
71
+ )
72
+ __TS__ObjectDefineProperty(
73
+ UnitBooleanField,
74
+ "valueChangeEvent",
75
+ {get = function(self)
76
+ return self:getOrCreateValueChangeEvent()
77
+ end}
78
+ )
79
+ ____exports.UnitFloatField = __TS__Class()
80
+ local UnitFloatField = ____exports.UnitFloatField
81
+ UnitFloatField.name = "UnitFloatField"
82
+ __TS__ClassExtends(UnitFloatField, ____exports.UnitField)
83
+ function UnitFloatField.prototype.getNativeFieldById(self, id)
84
+ return convertUnitRealField(id)
85
+ end
86
+ function UnitFloatField.prototype.getNativeFieldValue(self, instance)
87
+ return instance:getField(self.nativeField)
88
+ end
89
+ function UnitFloatField.prototype.setNativeFieldValue(self, instance, value)
90
+ return instance:setField(self.nativeField, value)
91
+ end
92
+ __TS__SetDescriptor(
93
+ UnitFloatField.prototype,
94
+ "defaultValue",
95
+ {get = function(self)
96
+ return 0
97
+ end},
98
+ true
99
+ )
100
+ __TS__ObjectDefineProperty(
101
+ UnitFloatField,
102
+ "valueChangeEvent",
103
+ {get = function(self)
104
+ return self:getOrCreateValueChangeEvent()
105
+ end}
106
+ )
107
+ ____exports.UnitIntegerField = __TS__Class()
108
+ local UnitIntegerField = ____exports.UnitIntegerField
109
+ UnitIntegerField.name = "UnitIntegerField"
110
+ __TS__ClassExtends(UnitIntegerField, ____exports.UnitField)
111
+ function UnitIntegerField.prototype.getNativeFieldById(self, id)
112
+ return convertUnitIntegerField(id)
113
+ end
114
+ function UnitIntegerField.prototype.getNativeFieldValue(self, instance)
115
+ return instance:getField(self.nativeField)
116
+ end
117
+ function UnitIntegerField.prototype.setNativeFieldValue(self, instance, value)
118
+ return instance:setField(self.nativeField, value)
119
+ end
120
+ __TS__SetDescriptor(
121
+ UnitIntegerField.prototype,
122
+ "defaultValue",
123
+ {get = function(self)
124
+ return 0
125
+ end},
126
+ true
127
+ )
128
+ __TS__ObjectDefineProperty(
129
+ UnitIntegerField,
130
+ "valueChangeEvent",
131
+ {get = function(self)
132
+ return self:getOrCreateValueChangeEvent()
133
+ end}
134
+ )
25
135
  ____exports.UnitStringField = __TS__Class()
26
136
  local UnitStringField = ____exports.UnitStringField
27
137
  UnitStringField.name = "UnitStringField"
28
138
  __TS__ClassExtends(UnitStringField, ____exports.UnitField)
29
139
  function UnitStringField.prototype.getNativeFieldById(self, id)
30
- return ConvertUnitStringField(id)
31
- end
32
- function UnitStringField.prototype.hasNativeFieldValue(self)
33
- return true
140
+ return convertUnitStringField(id)
34
141
  end
35
142
  function UnitStringField.prototype.getNativeFieldValue(self, instance)
36
143
  return instance:getField(self.nativeField)
37
144
  end
38
- function UnitStringField.prototype.getObjectDataEntryId(self, instance)
39
- return instance.typeId
40
- end
41
145
  function UnitStringField.prototype.setNativeFieldValue(self, instance, value)
42
146
  return instance:setField(self.nativeField, value)
43
147
  end
@@ -49,4 +153,161 @@ __TS__SetDescriptor(
49
153
  end},
50
154
  true
51
155
  )
156
+ __TS__ObjectDefineProperty(
157
+ UnitStringField,
158
+ "valueChangeEvent",
159
+ {get = function(self)
160
+ return self:getOrCreateValueChangeEvent()
161
+ end}
162
+ )
163
+ ____exports.UnitWeaponField = __TS__Class()
164
+ local UnitWeaponField = ____exports.UnitWeaponField
165
+ UnitWeaponField.name = "UnitWeaponField"
166
+ __TS__ClassExtends(UnitWeaponField, ObjectLevelField)
167
+ function UnitWeaponField.prototype.getLevelCount(self)
168
+ return 2
169
+ end
170
+ function UnitWeaponField.prototype.getObjectDataEntryId(self, instance)
171
+ return instance.typeId
172
+ end
173
+ function UnitWeaponField.prototype.hasNativeFieldValue(self)
174
+ return true
175
+ end
176
+ __TS__SetDescriptor(
177
+ UnitWeaponField.prototype,
178
+ "instanceClass",
179
+ {get = function(self)
180
+ return Unit
181
+ end},
182
+ true
183
+ )
184
+ __TS__ObjectDefineProperty(
185
+ UnitWeaponField,
186
+ "valueChangeEvent",
187
+ {get = function(self)
188
+ return self:getOrCreateValueChangeEvent()
189
+ end}
190
+ )
191
+ ____exports.UnitNumberWeaponField = __TS__Class()
192
+ local UnitNumberWeaponField = ____exports.UnitNumberWeaponField
193
+ UnitNumberWeaponField.name = "UnitNumberWeaponField"
194
+ __TS__ClassExtends(UnitNumberWeaponField, ____exports.UnitWeaponField)
195
+ __TS__SetDescriptor(
196
+ UnitNumberWeaponField.prototype,
197
+ "defaultValue",
198
+ {get = function(self)
199
+ return 0
200
+ end},
201
+ true
202
+ )
203
+ __TS__ObjectDefineProperty(
204
+ UnitNumberWeaponField,
205
+ "valueChangeEvent",
206
+ {get = function(self)
207
+ return self:getOrCreateValueChangeEvent()
208
+ end}
209
+ )
210
+ ____exports.UnitEnumWeaponField = __TS__Class()
211
+ local UnitEnumWeaponField = ____exports.UnitEnumWeaponField
212
+ UnitEnumWeaponField.name = "UnitEnumWeaponField"
213
+ __TS__ClassExtends(UnitEnumWeaponField, ____exports.UnitWeaponField)
214
+ function UnitEnumWeaponField.prototype.getNativeFieldById(self, id)
215
+ return convertUnitWeaponIntegerField(id)
216
+ end
217
+ function UnitEnumWeaponField.prototype.getNativeFieldValue(self, instance, index)
218
+ local value = getUnitWeaponIntegerField(instance.handle, self.nativeField, index)
219
+ if self.values:contains(value) then
220
+ return value
221
+ end
222
+ return self.values:first()
223
+ end
224
+ function UnitEnumWeaponField.prototype.setNativeFieldValue(self, instance, index, value)
225
+ return setUnitWeaponIntegerField(instance.handle, self.nativeField, index, value)
226
+ end
227
+ __TS__SetDescriptor(
228
+ UnitEnumWeaponField.prototype,
229
+ "defaultValue",
230
+ {get = function(self)
231
+ return self.values:first()
232
+ end},
233
+ true
234
+ )
235
+ __TS__ObjectDefineProperty(
236
+ UnitEnumWeaponField,
237
+ "valueChangeEvent",
238
+ {get = function(self)
239
+ return self:getOrCreateValueChangeEvent()
240
+ end}
241
+ )
242
+ ____exports.UnitAttackTypeWeaponField = __TS__Class()
243
+ local UnitAttackTypeWeaponField = ____exports.UnitAttackTypeWeaponField
244
+ UnitAttackTypeWeaponField.name = "UnitAttackTypeWeaponField"
245
+ __TS__ClassExtends(UnitAttackTypeWeaponField, ____exports.UnitEnumWeaponField)
246
+ function UnitAttackTypeWeaponField.prototype.____constructor(self, ...)
247
+ UnitAttackTypeWeaponField.____super.prototype.____constructor(self, ...)
248
+ self.values = nonEmptyLinkedSetOf(
249
+ 1,
250
+ 2,
251
+ 3,
252
+ 0,
253
+ 5,
254
+ 4,
255
+ 6
256
+ )
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
52
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,14 +36,24 @@ 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>);
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;
38
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> {
39
42
  protected abstract readonly defaultValue: ValueType;
40
43
  protected abstract getNativeFieldValue(instance: InstanceType): ValueType;
41
44
  protected abstract setNativeFieldValue(instance: InstanceType, value: ValueType): boolean;
42
- getValue(entry: ObjectDataEntryType | InstanceType): ValueType;
45
+ private originalValueByInstance?;
46
+ private modifiersByInstance?;
47
+ getValue(entry: ObjectDataEntryType | InstanceType, includeModifiers?: boolean): ValueType;
43
48
  setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType): boolean;
49
+ updateActualValue(instance: InstanceType): void;
50
+ applyModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): void;
51
+ removeModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): boolean;
44
52
  removeValue(entry: ObjectDataEntryType): boolean;
45
53
  trySetValue(entry: ObjectDataEntryType | InstanceType, value: unknown): boolean;
54
+ private getActualValue;
55
+ private setActualValue;
56
+ private calculateActualValue;
46
57
  private invokeValueChangeEvent;
47
58
  private invokeValueChangeEventRecursive;
48
59
  protected static getOrCreateValueChangeEvent<T extends ObjectField, R extends ReadonlyObjectFieldType<T>>(this: ReadonlyObjectFieldConstructor<T>): ObjectFieldValueChangeEvent<R>;
@@ -71,13 +82,21 @@ export declare abstract class ObjectArrayField<ObjectDataEntryType extends Objec
71
82
  setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType[]): boolean;
72
83
  }
73
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?;
74
87
  protected abstract readonly defaultValue: ValueType;
75
88
  protected abstract getNativeFieldValue(instance: InstanceType, level: number): ValueType;
76
89
  protected abstract setNativeFieldValue(instance: InstanceType, level: number, value: ValueType): boolean;
77
90
  protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
78
91
  getValue<LevelType extends [number] | []>(entry: ObjectDataEntryType | InstanceType, ...[level]: LevelType): LevelType extends [number] ? ValueType : ValueType[];
79
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;
80
96
  trySetValue(entry: ObjectDataEntryType | InstanceType, levelOrValue: number | unknown, value?: unknown): boolean;
97
+ private getActualValue;
98
+ private setActualValue;
99
+ private calculateActualValue;
81
100
  private invokeValueChangeEvent;
82
101
  private invokeValueChangeEventRecursive;
83
102
  protected static getOrCreateValueChangeEvent<T extends ObjectLevelField, R extends ReadonlyObjectLevelFieldType<T>>(this: ReadonlyObjectLevelFieldConstructor<T>): ObjectLevelFieldValueChangeEvent<R>;