warscript 0.0.1-dev.effa673 → 0.0.1-dev.f0a9ffe

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 (90) hide show
  1. package/attributes.d.ts +5 -0
  2. package/attributes.lua +8 -1
  3. package/core/types/sound.lua +5 -0
  4. package/core/types/timer.d.ts +8 -8
  5. package/core/types/timer.lua +25 -23
  6. package/decl/native.d.ts +844 -788
  7. package/engine/behavior.d.ts +2 -0
  8. package/engine/behavior.lua +53 -27
  9. package/engine/behaviour/ability/apply-buff.lua +1 -1
  10. package/engine/behaviour/ability/damage.d.ts +6 -3
  11. package/engine/behaviour/ability/damage.lua +24 -36
  12. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  13. package/engine/behaviour/ability/emulate-impact.lua +18 -3
  14. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  15. package/engine/behaviour/ability/restore-mana.lua +6 -6
  16. package/engine/behaviour/ability.lua +8 -17
  17. package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
  18. package/engine/behaviour/unit/stun-immunity.lua +43 -27
  19. package/engine/behaviour/unit.d.ts +26 -0
  20. package/engine/behaviour/unit.lua +163 -4
  21. package/engine/buff.d.ts +2 -1
  22. package/engine/buff.lua +9 -3
  23. package/engine/internal/ability.d.ts +4 -0
  24. package/engine/internal/ability.lua +23 -0
  25. package/engine/internal/item/ability.lua +63 -11
  26. package/engine/internal/item.d.ts +5 -2
  27. package/engine/internal/item.lua +75 -3
  28. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  29. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  30. package/engine/internal/unit/ability.d.ts +35 -0
  31. package/engine/internal/unit/ability.lua +62 -0
  32. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  33. package/engine/internal/unit/allowed-targets.lua +9 -1
  34. package/engine/internal/unit/order.d.ts +20 -0
  35. package/engine/internal/unit/order.lua +136 -0
  36. package/engine/internal/unit+damage.d.ts +2 -11
  37. package/engine/internal/unit+damage.lua +10 -14
  38. package/engine/internal/unit+spellSteal.lua +1 -2
  39. package/engine/internal/unit-missile-launch.lua +9 -2
  40. package/engine/internal/unit.d.ts +23 -6
  41. package/engine/internal/unit.lua +233 -94
  42. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  43. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  44. package/engine/object-data/auxiliary/attachment-preset.d.ts +1 -1
  45. package/engine/object-data/auxiliary/attachment-preset.lua +3 -2
  46. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  47. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  48. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  49. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  50. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  51. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  52. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  53. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  54. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  55. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  56. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  57. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  58. package/engine/object-data/entry/ability-type.lua +8 -3
  59. package/engine/object-data/entry/buff-type/applicable.lua +5 -0
  60. package/engine/object-data/entry/buff-type.d.ts +5 -11
  61. package/engine/object-data/entry/buff-type.lua +11 -27
  62. package/engine/object-data/entry/unit-type.d.ts +13 -4
  63. package/engine/object-data/entry/unit-type.lua +153 -85
  64. package/engine/object-field/ability.d.ts +1 -1
  65. package/engine/object-field/unit.d.ts +57 -3
  66. package/engine/object-field/unit.lua +207 -7
  67. package/engine/object-field.d.ts +15 -4
  68. package/engine/object-field.lua +184 -90
  69. package/engine/standard/entries/buff-type.d.ts +3 -0
  70. package/engine/standard/entries/buff-type.lua +3 -0
  71. package/engine/standard/fields/unit.d.ts +4 -0
  72. package/engine/standard/fields/unit.lua +7 -0
  73. package/engine/text-tag.d.ts +36 -2
  74. package/engine/text-tag.lua +175 -10
  75. package/engine/unit.d.ts +1 -0
  76. package/engine/unit.lua +1 -0
  77. package/objutil/buff.lua +1 -2
  78. package/package.json +2 -2
  79. package/utility/arrays.d.ts +1 -0
  80. package/utility/arrays.lua +3 -0
  81. package/utility/functions.d.ts +8 -0
  82. package/utility/functions.lua +13 -0
  83. package/utility/linked-set.d.ts +1 -0
  84. package/utility/linked-set.lua +3 -0
  85. package/utility/lua-maps.d.ts +4 -0
  86. package/utility/lua-maps.lua +20 -0
  87. package/utility/lua-sets.d.ts +2 -0
  88. package/utility/lua-sets.lua +7 -0
  89. package/core/types/order.d.ts +0 -25
  90. package/core/types/order.lua +0 -55
@@ -20,6 +20,14 @@ local extractObjectDataEntryLevelFieldValue = ____entry.extractObjectDataEntryLe
20
20
  local ObjectDataEntry = ____entry.ObjectDataEntry
21
21
  local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
22
22
  local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.ObjectDataEntryIdGenerator
23
+ local ____linked_2Dset = require("utility.linked-set")
24
+ local mutableLinkedSet = ____linked_2Dset.mutableLinkedSet
25
+ local ____lua_2Dmaps = require("utility.lua-maps")
26
+ local emptyLuaMap = ____lua_2Dmaps.emptyLuaMap
27
+ local getOrPut = ____lua_2Dmaps.getOrPut
28
+ local mutableWeakLuaMap = ____lua_2Dmaps.mutableWeakLuaMap
29
+ local ____arrays = require("utility.arrays")
30
+ local emptyArray = ____arrays.emptyArray
23
31
  local compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId = {}
24
32
  local defaultValueByObjectDataEntryIdByObjectFieldId = postcompile(function() return compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId end)
25
33
  local objectFieldById = {}
@@ -29,7 +37,11 @@ local idGenerator = __TS__New(
29
37
  )
30
38
  local ObjectFieldBase = __TS__Class()
31
39
  ObjectFieldBase.name = "ObjectFieldBase"
32
- function ObjectFieldBase.prototype.____constructor(self, id)
40
+ function ObjectFieldBase.prototype.____constructor(self, id, isGlobal)
41
+ if isGlobal == nil then
42
+ isGlobal = false
43
+ end
44
+ self.isGlobal = isGlobal
33
45
  self.valueByInstance = setmetatable({}, {__mode = "k"})
34
46
  if objectFieldById[id] ~= nil then
35
47
  error(
@@ -48,12 +60,13 @@ function ObjectFieldBase.prototype.supports(self, instance)
48
60
  end
49
61
  function ObjectFieldBase.prototype.hasValue(self, instance)
50
62
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
51
- return defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)] ~= nil or self:hasNativeFieldValue(instance)
63
+ return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)] ~= nil or self:hasNativeFieldValue(instance)
52
64
  end
53
- function ObjectFieldBase.create(self, id)
65
+ function ObjectFieldBase.create(self, id, isGlobal)
54
66
  return __TS__New(
55
67
  self,
56
- id or idGenerator:next()
68
+ id or idGenerator:next(),
69
+ isGlobal
57
70
  )
58
71
  end
59
72
  function ObjectFieldBase.of(self, id)
@@ -75,7 +88,7 @@ ____exports.ObjectField = __TS__Class()
75
88
  local ObjectField = ____exports.ObjectField
76
89
  ObjectField.name = "ObjectField"
77
90
  __TS__ClassExtends(ObjectField, ObjectFieldBase)
78
- function ObjectField.prototype.getValue(self, entry)
91
+ function ObjectField.prototype.getValue(self, entry, includeModifiers)
79
92
  if __TS__InstanceOf(entry, ObjectDataEntry) then
80
93
  local defaultValueByObjectDataEntryId = (warpack.compiletime and compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId or defaultValueByObjectDataEntryIdByObjectFieldId)[self.id]
81
94
  if defaultValueByObjectDataEntryId ~= nil then
@@ -86,22 +99,16 @@ function ObjectField.prototype.getValue(self, entry)
86
99
  end
87
100
  return self.defaultValue
88
101
  end
89
- local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
90
- if defaultValueByObjectDataEntryId ~= nil then
91
- local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
92
- if defaultValue ~= nil then
93
- local ____self_valueByInstance_entry_0 = self.valueByInstance[entry]
94
- if ____self_valueByInstance_entry_0 == nil then
95
- ____self_valueByInstance_entry_0 = defaultValue
102
+ if includeModifiers == false then
103
+ local originalValueByInstance = self.originalValueByInstance
104
+ if originalValueByInstance ~= nil then
105
+ local originalValue = originalValueByInstance[entry]
106
+ if originalValue ~= nil then
107
+ return originalValue
96
108
  end
97
- return ____self_valueByInstance_entry_0
98
109
  end
99
110
  end
100
- local ____temp_1 = self:getNativeFieldValue(entry)
101
- if ____temp_1 == nil then
102
- ____temp_1 = self.defaultValue
103
- end
104
- return ____temp_1
111
+ return self:getActualValue(entry)
105
112
  end
106
113
  function ObjectField.prototype.setValue(self, entry, value)
107
114
  if __TS__InstanceOf(entry, ObjectDataEntry) then
@@ -116,37 +123,53 @@ function ObjectField.prototype.setValue(self, entry, value)
116
123
  defaultValueByObjectDataEntryId[entry.id] = value
117
124
  return true
118
125
  end
119
- local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
120
- if defaultValueByObjectDataEntryId ~= nil then
121
- local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
122
- if defaultValue ~= nil then
123
- local ____self_valueByInstance_entry_2 = self.valueByInstance[entry]
124
- if ____self_valueByInstance_entry_2 == nil then
125
- ____self_valueByInstance_entry_2 = defaultValue
126
- end
127
- local ____self_valueByInstance_entry_2_3 = ____self_valueByInstance_entry_2
128
- if ____self_valueByInstance_entry_2_3 == nil then
129
- ____self_valueByInstance_entry_2_3 = self.defaultValue
126
+ local modifiersByInstance = self.modifiersByInstance
127
+ if modifiersByInstance ~= nil then
128
+ local modifiers = modifiersByInstance[entry]
129
+ if modifiers ~= nil and modifiers.size ~= 0 then
130
+ local originalValueByInstance = self.originalValueByInstance
131
+ if originalValueByInstance == nil then
132
+ originalValueByInstance = mutableWeakLuaMap()
133
+ self.originalValueByInstance = originalValueByInstance
130
134
  end
131
- local previousValue = ____self_valueByInstance_entry_2_3
132
- if value ~= previousValue then
133
- self.valueByInstance[entry] = value
134
- self:invokeValueChangeEvent(entry, self, previousValue, value)
135
- end
136
- return true
135
+ originalValueByInstance[entry] = value
136
+ value = self:calculateActualValue(entry)
137
137
  end
138
138
  end
139
- if not self:hasNativeFieldValue(entry) then
140
- return false
139
+ return self:setActualValue(entry, value)
140
+ end
141
+ function ObjectField.prototype.applyModifier(self, instance, modifier)
142
+ local modifiersByInstance = self.modifiersByInstance
143
+ if modifiersByInstance == nil then
144
+ modifiersByInstance = mutableWeakLuaMap()
145
+ self.modifiersByInstance = modifiersByInstance
146
+ end
147
+ if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
148
+ local originalValueByInstance = self.originalValueByInstance
149
+ if originalValueByInstance == nil then
150
+ originalValueByInstance = mutableWeakLuaMap()
151
+ self.originalValueByInstance = originalValueByInstance
152
+ end
153
+ originalValueByInstance[instance] = self:getActualValue(instance)
154
+ self:setActualValue(
155
+ instance,
156
+ self:calculateActualValue(instance)
157
+ )
141
158
  end
142
- local previousValue = self:getNativeFieldValue(entry)
143
- if value ~= previousValue then
144
- if not self:setNativeFieldValue(entry, value) then
145
- return false
159
+ end
160
+ function ObjectField.prototype.removeModifier(self, instance, modifier)
161
+ local modifiersByInstance = self.modifiersByInstance
162
+ if modifiersByInstance ~= nil then
163
+ local modifiers = modifiersByInstance[instance]
164
+ if modifiers ~= nil and modifiers:remove(modifier) then
165
+ self:setActualValue(
166
+ instance,
167
+ self:calculateActualValue(instance)
168
+ )
169
+ return true
146
170
  end
147
- self:invokeValueChangeEvent(entry, self, previousValue, value)
148
171
  end
149
- return true
172
+ return false
150
173
  end
151
174
  function ObjectField.prototype.removeValue(self, entry)
152
175
  if not warpack.compiletime then
@@ -168,6 +191,77 @@ function ObjectField.prototype.trySetValue(self, entry, value)
168
191
  end
169
192
  return self:setValue(entry, value)
170
193
  end
194
+ function ObjectField.prototype.getActualValue(self, instance)
195
+ local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
196
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
197
+ local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
198
+ if defaultValue ~= nil or self.isGlobal then
199
+ local ____self_valueByInstance_instance_0 = self.valueByInstance[instance]
200
+ if ____self_valueByInstance_instance_0 == nil then
201
+ ____self_valueByInstance_instance_0 = defaultValue
202
+ end
203
+ local ____self_valueByInstance_instance_0_1 = ____self_valueByInstance_instance_0
204
+ if ____self_valueByInstance_instance_0_1 == nil then
205
+ ____self_valueByInstance_instance_0_1 = self.defaultValue
206
+ end
207
+ return ____self_valueByInstance_instance_0_1
208
+ end
209
+ end
210
+ local ____temp_2 = self:getNativeFieldValue(instance)
211
+ if ____temp_2 == nil then
212
+ ____temp_2 = self.defaultValue
213
+ end
214
+ return ____temp_2
215
+ end
216
+ function ObjectField.prototype.setActualValue(self, instance, value)
217
+ local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
218
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
219
+ local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
220
+ if defaultValue ~= nil or self.isGlobal then
221
+ local ____self_valueByInstance_instance_3 = self.valueByInstance[instance]
222
+ if ____self_valueByInstance_instance_3 == nil then
223
+ ____self_valueByInstance_instance_3 = defaultValue
224
+ end
225
+ local ____self_valueByInstance_instance_3_4 = ____self_valueByInstance_instance_3
226
+ if ____self_valueByInstance_instance_3_4 == nil then
227
+ ____self_valueByInstance_instance_3_4 = self.defaultValue
228
+ end
229
+ local previousValue = ____self_valueByInstance_instance_3_4
230
+ if value ~= previousValue then
231
+ self.valueByInstance[instance] = value
232
+ self:invokeValueChangeEvent(instance, self, previousValue, value)
233
+ end
234
+ return true
235
+ end
236
+ end
237
+ if not self:hasNativeFieldValue(instance) then
238
+ return false
239
+ end
240
+ local previousValue = self:getNativeFieldValue(instance)
241
+ if value ~= previousValue then
242
+ if not self:setNativeFieldValue(instance, value) then
243
+ return false
244
+ end
245
+ self:invokeValueChangeEvent(instance, self, previousValue, value)
246
+ end
247
+ return true
248
+ end
249
+ function ObjectField.prototype.calculateActualValue(self, instance)
250
+ local ____opt_5 = self.originalValueByInstance
251
+ local originalValue = ____opt_5 and ____opt_5[instance]
252
+ local ____opt_7 = self.modifiersByInstance
253
+ local modifiers = ____opt_7 and ____opt_7[instance]
254
+ if originalValue ~= nil then
255
+ local value = originalValue
256
+ if modifiers ~= nil then
257
+ for modifier in pairs(modifiers) do
258
+ value = modifier(instance, value, originalValue)
259
+ end
260
+ end
261
+ return value
262
+ end
263
+ return self.defaultValue
264
+ end
171
265
  function ObjectField.prototype.invokeValueChangeEvent(self, ...)
172
266
  self:invokeValueChangeEventRecursive(
173
267
  getClass(self),
@@ -221,37 +315,37 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
221
315
  if defaultValueByObjectDataEntryId ~= nil then
222
316
  local value = defaultValueByObjectDataEntryId[entry.id]
223
317
  if value ~= nil then
224
- local ____temp_5
318
+ local ____temp_10
225
319
  if index == nil then
226
- ____temp_5 = value
320
+ ____temp_10 = value
227
321
  else
228
- local ____value_index_4 = value[index + 1]
229
- if ____value_index_4 == nil then
230
- ____value_index_4 = self.defaultValue
322
+ local ____value_index_9 = value[index + 1]
323
+ if ____value_index_9 == nil then
324
+ ____value_index_9 = self.defaultValue
231
325
  end
232
- ____temp_5 = ____value_index_4
326
+ ____temp_10 = ____value_index_9
233
327
  end
234
- return ____temp_5
328
+ return ____temp_10
235
329
  end
236
330
  end
237
331
  return index == nil and ({}) or self.defaultValue
238
332
  end
239
333
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
240
- if defaultValueByObjectDataEntryId ~= nil then
241
- local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
242
- if defaultValue ~= nil then
243
- local value = self.valueByInstance[entry] or defaultValue
244
- local ____temp_7
334
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
335
+ local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
336
+ if defaultValue ~= nil or self.isGlobal then
337
+ local value = self.valueByInstance[entry] or defaultValue or emptyArray()
338
+ local ____temp_12
245
339
  if index == nil then
246
- ____temp_7 = value
340
+ ____temp_12 = value
247
341
  else
248
- local ____value_index_6 = value[index + 1]
249
- if ____value_index_6 == nil then
250
- ____value_index_6 = self.defaultValue
342
+ local ____value_index_11 = value[index + 1]
343
+ if ____value_index_11 == nil then
344
+ ____value_index_11 = self.defaultValue
251
345
  end
252
- ____temp_7 = ____value_index_6
346
+ ____temp_12 = ____value_index_11
253
347
  end
254
- return ____temp_7
348
+ return ____temp_12
255
349
  end
256
350
  end
257
351
  if index ~= nil then
@@ -296,36 +390,36 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
296
390
  if defaultValueByObjectDataEntryId ~= nil then
297
391
  local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
298
392
  if valueByLevel ~= nil then
299
- local ____valueByLevel_index_8 = valueByLevel[level + 1]
300
- if ____valueByLevel_index_8 == nil then
301
- ____valueByLevel_index_8 = self.defaultValue
393
+ local ____valueByLevel_index_13 = valueByLevel[level + 1]
394
+ if ____valueByLevel_index_13 == nil then
395
+ ____valueByLevel_index_13 = self.defaultValue
302
396
  end
303
- return ____valueByLevel_index_8
397
+ return ____valueByLevel_index_13
304
398
  end
305
399
  end
306
400
  return self.defaultValue
307
401
  end
308
402
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
309
- if defaultValueByObjectDataEntryId ~= nil then
310
- local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
311
- if defaultValueByLevel ~= nil then
312
- local ____opt_9 = self.valueByInstance[entry]
313
- local ____temp_11 = ____opt_9 and ____opt_9[level + 1]
314
- if ____temp_11 == nil then
315
- ____temp_11 = defaultValueByLevel[level + 1]
403
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
404
+ local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
405
+ if defaultValueByLevel ~= nil or self.isGlobal then
406
+ local ____opt_14 = self.valueByInstance[entry]
407
+ local ____temp_16 = ____opt_14 and ____opt_14[level + 1]
408
+ if ____temp_16 == nil then
409
+ ____temp_16 = (defaultValueByLevel or emptyArray())[level + 1]
316
410
  end
317
- local ____temp_11_12 = ____temp_11
318
- if ____temp_11_12 == nil then
319
- ____temp_11_12 = self.defaultValue
411
+ local ____temp_16_17 = ____temp_16
412
+ if ____temp_16_17 == nil then
413
+ ____temp_16_17 = self.defaultValue
320
414
  end
321
- return ____temp_11_12
415
+ return ____temp_16_17
322
416
  end
323
417
  end
324
- local ____temp_13 = self:getNativeFieldValue(entry, level)
325
- if ____temp_13 == nil then
326
- ____temp_13 = self.defaultValue
418
+ local ____temp_18 = self:getNativeFieldValue(entry, level)
419
+ if ____temp_18 == nil then
420
+ ____temp_18 = self.defaultValue
327
421
  end
328
- return ____temp_13
422
+ return ____temp_18
329
423
  end
330
424
  function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
331
425
  if value == nil then
@@ -366,23 +460,23 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
366
460
  return true
367
461
  end
368
462
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
369
- if defaultValueByObjectDataEntryId ~= nil then
370
- local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
371
- if defaultValueByLevel ~= nil then
463
+ if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
464
+ local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
465
+ if defaultValueByLevel ~= nil or self.isGlobal then
372
466
  local valueByLevel = self.valueByInstance[entry]
373
467
  if valueByLevel == nil then
374
468
  valueByLevel = {}
375
469
  self.valueByInstance[entry] = valueByLevel
376
470
  end
377
- local ____valueByLevel_index_14 = valueByLevel[level + 1]
378
- if ____valueByLevel_index_14 == nil then
379
- ____valueByLevel_index_14 = defaultValueByLevel[level + 1]
471
+ local ____valueByLevel_index_19 = valueByLevel[level + 1]
472
+ if ____valueByLevel_index_19 == nil then
473
+ ____valueByLevel_index_19 = (defaultValueByLevel or emptyArray())[level + 1]
380
474
  end
381
- local ____valueByLevel_index_14_15 = ____valueByLevel_index_14
382
- if ____valueByLevel_index_14_15 == nil then
383
- ____valueByLevel_index_14_15 = self.defaultValue
475
+ local ____valueByLevel_index_19_20 = ____valueByLevel_index_19
476
+ if ____valueByLevel_index_19_20 == nil then
477
+ ____valueByLevel_index_19_20 = self.defaultValue
384
478
  end
385
- local previousValue = ____valueByLevel_index_14_15
479
+ local previousValue = ____valueByLevel_index_19_20
386
480
  if value ~= previousValue then
387
481
  valueByLevel[level + 1] = value
388
482
  self:invokeValueChangeEvent(
@@ -0,0 +1,3 @@
1
+ /** @noSelfInFile */
2
+ import { StandardBuffTypeId } from "../../object-data/entry/buff-type";
3
+ export declare const CHEMICAL_RAGE_BUFF_TYPE_ID: StandardBuffTypeId;
@@ -0,0 +1,3 @@
1
+ local ____exports = {}
2
+ ____exports.CHEMICAL_RAGE_BUFF_TYPE_ID = fourCC("BNcr")
3
+ return ____exports
@@ -0,0 +1,4 @@
1
+ /** @noSelfInFile */
2
+ import { UnitClassificationsField, UnitPropulsionWindowField } from "../../object-field/unit";
3
+ export declare const PROPULSION_WINDOW_UNIT_FLOAT_FIELD: UnitPropulsionWindowField & symbol;
4
+ export declare const UNIT_CLASSIFICATIONS_FIELD: UnitClassificationsField & symbol;
@@ -0,0 +1,7 @@
1
+ local ____exports = {}
2
+ local ____unit = require("engine.object-field.unit")
3
+ local UnitClassificationsField = ____unit.UnitClassificationsField
4
+ local UnitPropulsionWindowField = ____unit.UnitPropulsionWindowField
5
+ ____exports.PROPULSION_WINDOW_UNIT_FLOAT_FIELD = UnitPropulsionWindowField:create(fourCC("urpw"))
6
+ ____exports.UNIT_CLASSIFICATIONS_FIELD = UnitClassificationsField:create(fourCC("utyp"))
7
+ return ____exports
@@ -1,5 +1,7 @@
1
1
  /** @noSelfInFile */
2
2
  import { Color } from "../core/types/color";
3
+ import { Unit } from "./internal/unit";
4
+ import { AbstractDestroyable, Destructor } from "../destroyable";
3
5
  export type TextTagPreset = {
4
6
  fadepoint: number;
5
7
  lifespan: number;
@@ -10,9 +12,39 @@ export type TextTagPreset = {
10
12
  velocityY: number;
11
13
  color: Color;
12
14
  };
13
- export declare class TextTag {
14
- private readonly handle;
15
+ declare const enum TextTagPropertyKey {
16
+ UNIT = 100,
17
+ HANDLE = 101,
18
+ CONFIGURATION = 102,
19
+ TEXT = 103,
20
+ FONT_SIZE = 104,
21
+ COLOR = 105,
22
+ X = 106,
23
+ Y = 107
24
+ }
25
+ export declare class TextTag extends AbstractDestroyable {
26
+ private readonly [TextTagPropertyKey.HANDLE];
27
+ private [TextTagPropertyKey.CONFIGURATION]?;
28
+ private [TextTagPropertyKey.TEXT]?;
29
+ private [TextTagPropertyKey.FONT_SIZE]?;
30
+ private [TextTagPropertyKey.COLOR]?;
31
+ private [TextTagPropertyKey.UNIT]?;
32
+ private [TextTagPropertyKey.X]?;
33
+ private [TextTagPropertyKey.Y]?;
15
34
  private constructor();
35
+ protected onDestroy(): Destructor;
36
+ get text(): string;
37
+ set text(text: string);
38
+ get fontSize(): number;
39
+ set fontSize(fontSize: number);
40
+ get color(): Color;
41
+ set color(color: Color);
42
+ get unit(): Unit | undefined;
43
+ set unit(unit: Unit | undefined);
44
+ get x(): number;
45
+ set x(x: number);
46
+ get y(): number;
47
+ set y(y: number);
16
48
  static BASE: Readonly<TextTagPreset>;
17
49
  static BASH: Readonly<TextTagPreset>;
18
50
  static CRITICAL_STRIKE: Readonly<TextTagPreset>;
@@ -22,4 +54,6 @@ export declare class TextTag {
22
54
  static MISS: Readonly<TextTagPreset>;
23
55
  static SHADOW_STRIKE: Readonly<TextTagPreset>;
24
56
  static flash(configuration: Readonly<TextTagPreset>, text: string, x: number, y: number, z?: number): void;
57
+ static create(configuration: Readonly<TextTagPreset>, text: string, unit: Unit): TextTag;
25
58
  }
59
+ export {};
@@ -1,9 +1,16 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__New = ____lualib.__TS__New
5
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
3
6
  local __TS__ObjectAssign = ____lualib.__TS__ObjectAssign
4
7
  local ____exports = {}
5
8
  local ____color = require("core.types.color")
6
9
  local Color = ____color.Color
10
+ local ____timer = require("core.types.timer")
11
+ local Timer = ____timer.Timer
12
+ local ____destroyable = require("destroyable")
13
+ local AbstractDestroyable = ____destroyable.AbstractDestroyable
7
14
  local createTextTag = CreateTextTag
8
15
  local destroyTextTag = DestroyTextTag
9
16
  local setTextTagText = SetTextTagText
@@ -18,16 +25,7 @@ local setTextTagAge = SetTextTagAge
18
25
  local setTextTagLifespan = SetTextTagLifespan
19
26
  local setTextTagFadepoint = SetTextTagFadepoint
20
27
  local DEFAULT_FONT_SIZE = 0.024
21
- ____exports.TextTag = __TS__Class()
22
- local TextTag = ____exports.TextTag
23
- TextTag.name = "TextTag"
24
- function TextTag.prototype.____constructor(self, handle)
25
- self.handle = handle
26
- end
27
- function TextTag.flash(self, configuration, text, x, y, z)
28
- local textTag = createTextTag()
29
- setTextTagText(textTag, text, DEFAULT_FONT_SIZE)
30
- setTextTagPos(textTag, x + configuration.offsetX, y + configuration.offsetY, (z or 0) + configuration.offsetZ)
28
+ local function applyConfiguration(textTag, configuration)
31
29
  setTextTagFadepoint(textTag, configuration.fadepoint)
32
30
  setTextTagLifespan(textTag, configuration.lifespan)
33
31
  local color = configuration.color
@@ -42,6 +40,168 @@ function TextTag.flash(self, configuration, text, x, y, z)
42
40
  setTextTagPermanent(textTag, false)
43
41
  setTextTagVisibility(textTag, true)
44
42
  end
43
+ local unitTextTags = setmetatable({}, {__mode = "k"})
44
+ ____exports.TextTag = __TS__Class()
45
+ local TextTag = ____exports.TextTag
46
+ TextTag.name = "TextTag"
47
+ __TS__ClassExtends(TextTag, AbstractDestroyable)
48
+ function TextTag.prototype.____constructor(self, handle)
49
+ AbstractDestroyable.prototype.____constructor(self)
50
+ self[101] = handle
51
+ end
52
+ function TextTag.prototype.onDestroy(self)
53
+ destroyTextTag(self[101])
54
+ unitTextTags[self] = nil
55
+ return AbstractDestroyable.prototype.onDestroy(self)
56
+ end
57
+ function TextTag.flash(self, configuration, text, x, y, z)
58
+ local textTag = createTextTag()
59
+ setTextTagText(textTag, text, DEFAULT_FONT_SIZE)
60
+ setTextTagPos(textTag, x + configuration.offsetX, y + configuration.offsetY, (z or 0) + configuration.offsetZ)
61
+ applyConfiguration(textTag, configuration)
62
+ end
63
+ function TextTag.create(self, configuration, text, unit)
64
+ local handle = createTextTag()
65
+ setTextTagText(handle, text, DEFAULT_FONT_SIZE)
66
+ setTextTagPosUnit(handle, unit.handle, configuration.offsetZ)
67
+ applyConfiguration(handle, configuration)
68
+ setTextTagPermanent(handle, true)
69
+ local textTag = __TS__New(____exports.TextTag, handle)
70
+ textTag[100] = unit
71
+ textTag[102] = configuration
72
+ unitTextTags[textTag] = true
73
+ return textTag
74
+ end
75
+ __TS__SetDescriptor(
76
+ TextTag.prototype,
77
+ "text",
78
+ {
79
+ get = function(self)
80
+ return self[103] or ""
81
+ end,
82
+ set = function(self, text)
83
+ setTextTagText(self[101], text, self[104] or DEFAULT_FONT_SIZE)
84
+ self[103] = text
85
+ end
86
+ },
87
+ true
88
+ )
89
+ __TS__SetDescriptor(
90
+ TextTag.prototype,
91
+ "fontSize",
92
+ {
93
+ get = function(self)
94
+ return self[104] or DEFAULT_FONT_SIZE
95
+ end,
96
+ set = function(self, fontSize)
97
+ setTextTagText(self[101], self[103] or "", DEFAULT_FONT_SIZE)
98
+ self[104] = fontSize
99
+ end
100
+ },
101
+ true
102
+ )
103
+ __TS__SetDescriptor(
104
+ TextTag.prototype,
105
+ "color",
106
+ {
107
+ get = function(self)
108
+ return self[105] or Color.white
109
+ end,
110
+ set = function(self, color)
111
+ setTextTagColor(
112
+ self[101],
113
+ color.r,
114
+ color.g,
115
+ color.b,
116
+ color.a
117
+ )
118
+ self[105] = color
119
+ end
120
+ },
121
+ true
122
+ )
123
+ __TS__SetDescriptor(
124
+ TextTag.prototype,
125
+ "unit",
126
+ {
127
+ get = function(self)
128
+ return self[100]
129
+ end,
130
+ set = function(self, unit)
131
+ if unit ~= nil then
132
+ setTextTagPosUnit(self[101], unit.handle, 0)
133
+ self[106] = nil
134
+ self[107] = nil
135
+ unitTextTags[self] = true
136
+ elseif self[100] ~= nil then
137
+ local unit = self[100]
138
+ local x = unit.x
139
+ local y = unit.y
140
+ setTextTagPos(self[101], x, y, 0)
141
+ self[106] = x
142
+ self[107] = y
143
+ unitTextTags[self] = nil
144
+ end
145
+ self[100] = unit
146
+ end
147
+ },
148
+ true
149
+ )
150
+ __TS__SetDescriptor(
151
+ TextTag.prototype,
152
+ "x",
153
+ {
154
+ get = function(self)
155
+ local ____self__106_2 = self[106]
156
+ if ____self__106_2 == nil then
157
+ local ____opt_0 = self[100]
158
+ ____self__106_2 = ____opt_0 and ____opt_0.x
159
+ end
160
+ return ____self__106_2 or 0
161
+ end,
162
+ set = function(self, x)
163
+ local ____self__101_6 = self[101]
164
+ local ____x_7 = x
165
+ local ____self__107_5 = self[107]
166
+ if ____self__107_5 == nil then
167
+ local ____opt_3 = self[100]
168
+ ____self__107_5 = ____opt_3 and ____opt_3.y
169
+ end
170
+ setTextTagPos(____self__101_6, ____x_7, ____self__107_5 or 0, 0)
171
+ self[106] = x
172
+ self[100] = nil
173
+ unitTextTags[self] = nil
174
+ end
175
+ },
176
+ true
177
+ )
178
+ __TS__SetDescriptor(
179
+ TextTag.prototype,
180
+ "y",
181
+ {
182
+ get = function(self)
183
+ local ____self__107_10 = self[107]
184
+ if ____self__107_10 == nil then
185
+ local ____opt_8 = self[100]
186
+ ____self__107_10 = ____opt_8 and ____opt_8.y
187
+ end
188
+ return ____self__107_10 or 0
189
+ end,
190
+ set = function(self, y)
191
+ local ____self__101_14 = self[101]
192
+ local ____self__106_13 = self[106]
193
+ if ____self__106_13 == nil then
194
+ local ____opt_11 = self[100]
195
+ ____self__106_13 = ____opt_11 and ____opt_11.x
196
+ end
197
+ setTextTagPos(____self__101_14, ____self__106_13 or 0, y, 0)
198
+ self[107] = y
199
+ self[100] = nil
200
+ unitTextTags[self] = nil
201
+ end
202
+ },
203
+ true
204
+ )
45
205
  TextTag.BASE = {
46
206
  fadepoint = 2,
47
207
  lifespan = 3,
@@ -106,4 +266,9 @@ TextTag.SHADOW_STRIKE = __TS__ObjectAssign(
106
266
  lifespan = 5
107
267
  }
108
268
  )
269
+ Timer.onPeriod[1 / 64]:addListener(function()
270
+ for textTag in pairs(unitTextTags) do
271
+ setTextTagPosUnit(textTag[101], textTag[100].handle, textTag[102].offsetZ)
272
+ end
273
+ end)
109
274
  return ____exports