warscript 0.0.1-dev.87b6c38 → 0.0.1-dev.8895725

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 (102) hide show
  1. package/core/types/frame.lua +47 -1
  2. package/core/types/handle.lua +6 -9
  3. package/core/types/item.d.ts +1 -0
  4. package/core/types/item.lua +1 -0
  5. package/core/types/player.d.ts +1 -1
  6. package/core/types/player.lua +12 -11
  7. package/core/types/sound.lua +1 -1
  8. package/destroyable.d.ts +1 -0
  9. package/destroyable.lua +9 -0
  10. package/engine/behavior.d.ts +4 -2
  11. package/engine/behavior.lua +69 -11
  12. package/engine/behaviour/ability/damage.d.ts +3 -0
  13. package/engine/behaviour/ability/damage.lua +8 -2
  14. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  15. package/engine/behaviour/ability.d.ts +9 -5
  16. package/engine/behaviour/ability.lua +29 -0
  17. package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
  18. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  19. package/engine/behaviour/unit.lua +13 -3
  20. package/engine/buff.d.ts +56 -19
  21. package/engine/buff.lua +283 -142
  22. package/engine/internal/ability.lua +15 -15
  23. package/engine/internal/item/fields.d.ts +12 -0
  24. package/engine/internal/item/fields.lua +33 -0
  25. package/engine/internal/item.d.ts +4 -5
  26. package/engine/internal/item.lua +37 -40
  27. package/engine/internal/mechanics/cast-ability.lua +6 -3
  28. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  29. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  30. package/engine/internal/object-data/health-bonus.lua +16 -0
  31. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  32. package/engine/internal/object-data/mana-bonus.lua +16 -0
  33. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  34. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  35. package/engine/internal/unit/attributes.d.ts +17 -0
  36. package/engine/internal/unit/attributes.lua +46 -0
  37. package/engine/internal/unit/bonus.d.ts +6 -0
  38. package/engine/internal/unit/bonus.lua +33 -3
  39. package/engine/internal/unit/fly-height.lua +3 -3
  40. package/engine/internal/unit/interrupts.d.ts +12 -0
  41. package/engine/internal/unit/interrupts.lua +28 -0
  42. package/engine/internal/unit/range-event.d.ts +12 -0
  43. package/engine/internal/unit/range-event.lua +90 -0
  44. package/engine/internal/unit/scale.lua +3 -3
  45. package/engine/internal/unit+bonus.lua +3 -3
  46. package/engine/internal/unit-missile-launch.lua +12 -5
  47. package/engine/internal/unit.d.ts +2 -9
  48. package/engine/internal/unit.lua +79 -121
  49. package/engine/local-client.d.ts +6 -1
  50. package/engine/local-client.lua +60 -5
  51. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  52. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  53. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  54. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  55. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  56. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  57. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  58. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  59. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  60. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  61. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  62. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  63. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  64. package/engine/object-data/entry/ability-type.d.ts +2 -0
  65. package/engine/object-data/entry/ability-type.lua +84 -4
  66. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  67. package/engine/object-data/entry/destructible-type.d.ts +12 -0
  68. package/engine/object-data/entry/destructible-type.lua +78 -0
  69. package/engine/object-field/ability.lua +2 -2
  70. package/engine/object-field/item.d.ts +22 -0
  71. package/engine/object-field/item.lua +118 -0
  72. package/engine/object-field/unit.d.ts +7 -4
  73. package/engine/object-field/unit.lua +4 -0
  74. package/engine/object-field.d.ts +3 -1
  75. package/engine/object-field.lua +177 -119
  76. package/engine/random.d.ts +1 -0
  77. package/engine/random.lua +8 -0
  78. package/engine/standard/fields/item.d.ts +4 -0
  79. package/engine/standard/fields/item.lua +6 -0
  80. package/engine/standard/fields/unit.d.ts +11 -5
  81. package/engine/standard/fields/unit.lua +13 -4
  82. package/engine/unit.d.ts +3 -0
  83. package/engine/unit.lua +3 -0
  84. package/lualib_bundle.lua +1 -1
  85. package/math.d.ts +2 -0
  86. package/math.lua +14 -0
  87. package/objutil/buff.lua +9 -7
  88. package/objutil/object.lua +1 -1
  89. package/operation.lua +1 -4
  90. package/package.json +5 -5
  91. package/patch-lua.lua +15 -0
  92. package/utility/linked-map.d.ts +35 -0
  93. package/utility/linked-map.lua +107 -0
  94. package/utility/linked-set.d.ts +3 -1
  95. package/utility/linked-set.lua +27 -0
  96. package/utility/records.lua +20 -1
  97. package/utility/unordered-map.d.ts +27 -0
  98. package/utility/unordered-map.lua +99 -0
  99. /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
  100. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  101. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  102. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -124,6 +124,7 @@ function ObjectField.prototype.setValue(self, entry, value)
124
124
  defaultValueByObjectDataEntryId[entry.id] = value
125
125
  return true
126
126
  end
127
+ local previousOriginalValue
127
128
  local modifiersByInstance = self.modifiersByInstance
128
129
  if modifiersByInstance ~= nil then
129
130
  local modifiers = modifiersByInstance[entry]
@@ -133,11 +134,40 @@ function ObjectField.prototype.setValue(self, entry, value)
133
134
  originalValueByInstance = mutableWeakLuaMap()
134
135
  self.originalValueByInstance = originalValueByInstance
135
136
  end
137
+ previousOriginalValue = originalValueByInstance[entry]
138
+ if value == previousOriginalValue then
139
+ return true
140
+ end
136
141
  originalValueByInstance[entry] = value
137
- value = self:calculateActualValue(entry)
142
+ value = (self:calculateActualValue(entry))
143
+ end
144
+ end
145
+ local previousValue = self:setActualValue(entry, value)
146
+ if previousValue == nil then
147
+ return false
148
+ end
149
+ if previousOriginalValue ~= nil or value ~= previousValue then
150
+ local ____self_invokeValueChangeEvent_2 = self.invokeValueChangeEvent
151
+ local ____entry_1 = entry
152
+ local ____previousOriginalValue_0 = previousOriginalValue
153
+ if ____previousOriginalValue_0 == nil then
154
+ ____previousOriginalValue_0 = previousValue
138
155
  end
156
+ ____self_invokeValueChangeEvent_2(
157
+ self,
158
+ ____entry_1,
159
+ self,
160
+ ____previousOriginalValue_0,
161
+ value
162
+ )
163
+ end
164
+ return true
165
+ end
166
+ function ObjectField.prototype.updateActualValue(self, instance)
167
+ local actualValue, hasModifiers = self:calculateActualValue(instance)
168
+ if hasModifiers then
169
+ self:setActualValue(instance, actualValue)
139
170
  end
140
- return self:setActualValue(entry, value)
141
171
  end
142
172
  function ObjectField.prototype.applyModifier(self, instance, modifier)
143
173
  local modifiersByInstance = self.modifiersByInstance
@@ -151,17 +181,14 @@ function ObjectField.prototype.applyModifier(self, instance, modifier)
151
181
  originalValueByInstance = mutableWeakLuaMap()
152
182
  self.originalValueByInstance = originalValueByInstance
153
183
  end
154
- local ____originalValueByInstance_1 = originalValueByInstance
155
- local ____instance_2 = instance
156
- local ____originalValueByInstance_instance_0 = originalValueByInstance[instance]
157
- if ____originalValueByInstance_instance_0 == nil then
158
- ____originalValueByInstance_instance_0 = self:getActualValue(instance)
184
+ local ____originalValueByInstance_4 = originalValueByInstance
185
+ local ____instance_5 = instance
186
+ local ____originalValueByInstance_instance_3 = originalValueByInstance[instance]
187
+ if ____originalValueByInstance_instance_3 == nil then
188
+ ____originalValueByInstance_instance_3 = self:getActualValue(instance)
159
189
  end
160
- ____originalValueByInstance_1[____instance_2] = ____originalValueByInstance_instance_0
161
- self:setActualValue(
162
- instance,
163
- self:calculateActualValue(instance)
164
- )
190
+ ____originalValueByInstance_4[____instance_5] = ____originalValueByInstance_instance_3
191
+ self:setActualValue(instance, (self:calculateActualValue(instance)))
165
192
  end
166
193
  end
167
194
  function ObjectField.prototype.removeModifier(self, instance, modifier)
@@ -169,10 +196,7 @@ function ObjectField.prototype.removeModifier(self, instance, modifier)
169
196
  if modifiersByInstance ~= nil then
170
197
  local modifiers = modifiersByInstance[instance]
171
198
  if modifiers ~= nil and modifiers:remove(modifier) then
172
- self:setActualValue(
173
- instance,
174
- self:calculateActualValue(instance)
175
- )
199
+ self:setActualValue(instance, (self:calculateActualValue(instance)))
176
200
  return true
177
201
  end
178
202
  end
@@ -203,22 +227,22 @@ function ObjectField.prototype.getActualValue(self, instance)
203
227
  if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
204
228
  local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
205
229
  if defaultValue ~= nil or self.isGlobal then
206
- local ____self_valueByInstance_instance_3 = self.valueByInstance[instance]
207
- if ____self_valueByInstance_instance_3 == nil then
208
- ____self_valueByInstance_instance_3 = defaultValue
230
+ local ____self_valueByInstance_instance_6 = self.valueByInstance[instance]
231
+ if ____self_valueByInstance_instance_6 == nil then
232
+ ____self_valueByInstance_instance_6 = defaultValue
209
233
  end
210
- local ____self_valueByInstance_instance_3_4 = ____self_valueByInstance_instance_3
211
- if ____self_valueByInstance_instance_3_4 == nil then
212
- ____self_valueByInstance_instance_3_4 = self.defaultValue
234
+ local ____self_valueByInstance_instance_6_7 = ____self_valueByInstance_instance_6
235
+ if ____self_valueByInstance_instance_6_7 == nil then
236
+ ____self_valueByInstance_instance_6_7 = self.defaultValue
213
237
  end
214
- return ____self_valueByInstance_instance_3_4
238
+ return ____self_valueByInstance_instance_6_7
215
239
  end
216
240
  end
217
- local ____temp_5 = self:getNativeFieldValue(instance)
218
- if ____temp_5 == nil then
219
- ____temp_5 = self.defaultValue
241
+ local ____temp_8 = self:getNativeFieldValue(instance)
242
+ if ____temp_8 == nil then
243
+ ____temp_8 = self.defaultValue
220
244
  end
221
- return ____temp_5
245
+ return ____temp_8
222
246
  end
223
247
  function ObjectField.prototype.setActualValue(self, instance, value)
224
248
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
@@ -226,45 +250,44 @@ function ObjectField.prototype.setActualValue(self, instance, value)
226
250
  if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
227
251
  local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
228
252
  if defaultValue ~= nil or self.isGlobal then
229
- local ____self_valueByInstance_instance_6 = self.valueByInstance[instance]
230
- if ____self_valueByInstance_instance_6 == nil then
231
- ____self_valueByInstance_instance_6 = defaultValue
253
+ local ____self_valueByInstance_instance_9 = self.valueByInstance[instance]
254
+ if ____self_valueByInstance_instance_9 == nil then
255
+ ____self_valueByInstance_instance_9 = defaultValue
232
256
  end
233
- local ____self_valueByInstance_instance_6_7 = ____self_valueByInstance_instance_6
234
- if ____self_valueByInstance_instance_6_7 == nil then
235
- ____self_valueByInstance_instance_6_7 = self.defaultValue
257
+ local ____self_valueByInstance_instance_9_10 = ____self_valueByInstance_instance_9
258
+ if ____self_valueByInstance_instance_9_10 == nil then
259
+ ____self_valueByInstance_instance_9_10 = self.defaultValue
236
260
  end
237
- local previousValue = ____self_valueByInstance_instance_6_7
261
+ local previousValue = ____self_valueByInstance_instance_9_10
238
262
  self.valueByInstance[instance] = value
239
- self:invokeValueChangeEvent(instance, self, previousValue, value)
240
- return true
263
+ return previousValue
241
264
  end
242
265
  end
243
266
  if not self:hasNativeFieldValue(objectDataEntryId) then
244
- return false
267
+ return nil
245
268
  end
246
269
  local previousValue = self:getNativeFieldValue(instance)
247
270
  if value ~= previousValue and not self:setNativeFieldValue(instance, value) then
248
- return false
271
+ return nil
249
272
  end
250
- self:invokeValueChangeEvent(instance, self, previousValue, value)
251
- return true
273
+ return previousValue
252
274
  end
253
275
  function ObjectField.prototype.calculateActualValue(self, instance)
254
- local ____opt_8 = self.originalValueByInstance
255
- local originalValue = ____opt_8 and ____opt_8[instance]
256
- local ____opt_10 = self.modifiersByInstance
257
- local modifiers = ____opt_10 and ____opt_10[instance]
276
+ local ____opt_11 = self.originalValueByInstance
277
+ local originalValue = ____opt_11 and ____opt_11[instance]
278
+ local ____opt_13 = self.modifiersByInstance
279
+ local modifiers = ____opt_13 and ____opt_13[instance]
258
280
  if originalValue ~= nil then
259
281
  local value = originalValue
260
282
  if modifiers ~= nil then
261
283
  for modifier in pairs(modifiers) do
262
284
  value = modifier(instance, value, originalValue)
263
285
  end
286
+ return value, true
264
287
  end
265
- return value
288
+ return value, false
266
289
  end
267
- return self.defaultValue
290
+ return self.defaultValue, false
268
291
  end
269
292
  function ObjectField.prototype.invokeValueChangeEvent(self, ...)
270
293
  self:invokeValueChangeEventRecursive(
@@ -319,17 +342,17 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
319
342
  if defaultValueByObjectDataEntryId ~= nil then
320
343
  local value = defaultValueByObjectDataEntryId[entry.id]
321
344
  if value ~= nil then
322
- local ____temp_13
345
+ local ____temp_16
323
346
  if index == nil then
324
- ____temp_13 = value
347
+ ____temp_16 = value
325
348
  else
326
- local ____value_index_12 = value[index + 1]
327
- if ____value_index_12 == nil then
328
- ____value_index_12 = self.defaultValue
349
+ local ____value_index_15 = value[index + 1]
350
+ if ____value_index_15 == nil then
351
+ ____value_index_15 = self.defaultValue
329
352
  end
330
- ____temp_13 = ____value_index_12
353
+ ____temp_16 = ____value_index_15
331
354
  end
332
- return ____temp_13
355
+ return ____temp_16
333
356
  end
334
357
  end
335
358
  return index == nil and ({}) or self.defaultValue
@@ -339,17 +362,17 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
339
362
  local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
340
363
  if defaultValue ~= nil or self.isGlobal then
341
364
  local value = self.valueByInstance[entry] or defaultValue or emptyArray()
342
- local ____temp_15
365
+ local ____temp_18
343
366
  if index == nil then
344
- ____temp_15 = value
367
+ ____temp_18 = value
345
368
  else
346
- local ____value_index_14 = value[index + 1]
347
- if ____value_index_14 == nil then
348
- ____value_index_14 = self.defaultValue
369
+ local ____value_index_17 = value[index + 1]
370
+ if ____value_index_17 == nil then
371
+ ____value_index_17 = self.defaultValue
349
372
  end
350
- ____temp_15 = ____value_index_14
373
+ ____temp_18 = ____value_index_17
351
374
  end
352
- return ____temp_15
375
+ return ____temp_18
353
376
  end
354
377
  end
355
378
  if index ~= nil then
@@ -380,12 +403,12 @@ ____exports.ObjectLevelField = __TS__Class()
380
403
  local ObjectLevelField = ____exports.ObjectLevelField
381
404
  ObjectLevelField.name = "ObjectLevelField"
382
405
  __TS__ClassExtends(ObjectLevelField, ObjectFieldBase)
383
- function ObjectLevelField.prototype.getValue(self, entry, level)
406
+ function ObjectLevelField.prototype.getValue(self, entry, level, includeModifiers)
384
407
  if level == nil then
385
408
  local result = {}
386
409
  local levelCount = self:getLevelCount(entry)
387
410
  for i = 0, levelCount - 1 do
388
- result[i + 1] = self:getValue(entry, i)
411
+ result[i + 1] = self:getValue(entry, i, includeModifiers)
389
412
  end
390
413
  return result
391
414
  end
@@ -394,20 +417,22 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
394
417
  if defaultValueByObjectDataEntryId ~= nil then
395
418
  local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
396
419
  if valueByLevel ~= nil then
397
- local ____valueByLevel_index_16 = valueByLevel[level + 1]
398
- if ____valueByLevel_index_16 == nil then
399
- ____valueByLevel_index_16 = self.defaultValue
420
+ local ____valueByLevel_index_19 = valueByLevel[level + 1]
421
+ if ____valueByLevel_index_19 == nil then
422
+ ____valueByLevel_index_19 = self.defaultValue
400
423
  end
401
- return ____valueByLevel_index_16
424
+ return ____valueByLevel_index_19
402
425
  end
403
426
  end
404
427
  return self.defaultValue
405
428
  end
406
- local ____opt_19 = self.originalValueByLevelByInstance
407
- local ____opt_17 = ____opt_19 and ____opt_19[entry]
408
- local originalValue = ____opt_17 and ____opt_17[level]
409
- if originalValue ~= nil then
410
- return originalValue
429
+ if not includeModifiers then
430
+ local ____opt_22 = self.originalValueByLevelByInstance
431
+ local ____opt_20 = ____opt_22 and ____opt_22[entry]
432
+ local originalValue = ____opt_20 and ____opt_20[level]
433
+ if originalValue ~= nil then
434
+ return originalValue
435
+ end
411
436
  end
412
437
  return self:getActualValue(entry, level)
413
438
  end
@@ -449,6 +474,7 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
449
474
  valueByLevel[level + 1] = value
450
475
  return true
451
476
  end
477
+ local previousOriginalValue
452
478
  local modifiersByInstance = self.modifiersByInstance
453
479
  if modifiersByInstance ~= nil then
454
480
  local modifiers = modifiersByInstance[entry]
@@ -458,11 +484,57 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
458
484
  originalValueByLevelByInstance = mutableWeakLuaMap()
459
485
  self.originalValueByLevelByInstance = originalValueByLevelByInstance
460
486
  end
461
- getOrPut(originalValueByLevelByInstance, entry, mutableLuaMap)[level] = value
487
+ local originalValueByLevel = getOrPut(originalValueByLevelByInstance, entry, mutableLuaMap)
488
+ previousOriginalValue = originalValueByLevel[level]
489
+ if value == previousOriginalValue then
490
+ return true
491
+ end
492
+ originalValueByLevel[level] = value
462
493
  value = self:calculateActualValue(entry, level)
463
494
  end
464
495
  end
465
- return self:setActualValue(entry, level, value)
496
+ local previousValue = self:setActualValue(entry, level, value)
497
+ if previousValue == nil then
498
+ return false
499
+ end
500
+ if previousOriginalValue ~= nil or value ~= previousValue then
501
+ local ____self_invokeValueChangeEvent_26 = self.invokeValueChangeEvent
502
+ local ____entry_25 = entry
503
+ local ____previousOriginalValue_24 = previousOriginalValue
504
+ if ____previousOriginalValue_24 == nil then
505
+ ____previousOriginalValue_24 = previousValue
506
+ end
507
+ ____self_invokeValueChangeEvent_26(
508
+ self,
509
+ ____entry_25,
510
+ self,
511
+ level,
512
+ ____previousOriginalValue_24,
513
+ value
514
+ )
515
+ end
516
+ return true
517
+ end
518
+ function ObjectLevelField.prototype.updateActualValue(self, instance, level)
519
+ local modifiersByInstance = self.modifiersByInstance
520
+ if modifiersByInstance == nil then
521
+ return
522
+ end
523
+ local modifiers = modifiersByInstance[instance]
524
+ if modifiers == nil or modifiers.size == 0 then
525
+ return
526
+ end
527
+ if level == nil then
528
+ for i = 0, self:getLevelCount(instance) - 1 do
529
+ self:updateActualValue(instance, i)
530
+ end
531
+ return
532
+ end
533
+ self:setActualValue(
534
+ instance,
535
+ level,
536
+ self:calculateActualValue(instance, level)
537
+ )
466
538
  end
467
539
  function ObjectLevelField.prototype.applyModifier(self, instance, modifier)
468
540
  local modifiersByInstance = self.modifiersByInstance
@@ -479,11 +551,11 @@ function ObjectLevelField.prototype.applyModifier(self, instance, modifier)
479
551
  local originalValueByLevel = getOrPut(originalValueByLevelByInstance, instance, mutableLuaMap)
480
552
  local levelCount = self:getLevelCount(instance)
481
553
  for level = 0, levelCount - 1 do
482
- local ____originalValueByLevel_level_21 = originalValueByLevel[level]
483
- if ____originalValueByLevel_level_21 == nil then
484
- ____originalValueByLevel_level_21 = self:getActualValue(instance, level)
554
+ local ____originalValueByLevel_level_27 = originalValueByLevel[level]
555
+ if ____originalValueByLevel_level_27 == nil then
556
+ ____originalValueByLevel_level_27 = self:getActualValue(instance, level)
485
557
  end
486
- originalValueByLevel[level] = ____originalValueByLevel_level_21
558
+ originalValueByLevel[level] = ____originalValueByLevel_level_27
487
559
  self:setActualValue(
488
560
  instance,
489
561
  level,
@@ -530,23 +602,23 @@ function ObjectLevelField.prototype.getActualValue(self, instance, level)
530
602
  if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
531
603
  local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
532
604
  if defaultValueByLevel ~= nil or self.isGlobal then
533
- local ____opt_22 = self.valueByInstance[instance]
534
- local ____temp_24 = ____opt_22 and ____opt_22[level + 1]
535
- if ____temp_24 == nil then
536
- ____temp_24 = (defaultValueByLevel or emptyArray())[level + 1]
605
+ local ____opt_28 = self.valueByInstance[instance]
606
+ local ____temp_30 = ____opt_28 and ____opt_28[level + 1]
607
+ if ____temp_30 == nil then
608
+ ____temp_30 = (defaultValueByLevel or emptyArray())[level + 1]
537
609
  end
538
- local ____temp_24_25 = ____temp_24
539
- if ____temp_24_25 == nil then
540
- ____temp_24_25 = self.defaultValue
610
+ local ____temp_30_31 = ____temp_30
611
+ if ____temp_30_31 == nil then
612
+ ____temp_30_31 = self.defaultValue
541
613
  end
542
- return ____temp_24_25
614
+ return ____temp_30_31
543
615
  end
544
616
  end
545
- local ____temp_26 = self:getNativeFieldValue(instance, level)
546
- if ____temp_26 == nil then
547
- ____temp_26 = self.defaultValue
617
+ local ____temp_32 = self:getNativeFieldValue(instance, level)
618
+ if ____temp_32 == nil then
619
+ ____temp_32 = self.defaultValue
548
620
  end
549
- return ____temp_26
621
+ return ____temp_32
550
622
  end
551
623
  function ObjectLevelField.prototype.setActualValue(self, instance, level, value)
552
624
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
@@ -559,48 +631,34 @@ function ObjectLevelField.prototype.setActualValue(self, instance, level, value)
559
631
  valueByLevel = {}
560
632
  self.valueByInstance[instance] = valueByLevel
561
633
  end
562
- local ____valueByLevel_index_27 = valueByLevel[level + 1]
563
- if ____valueByLevel_index_27 == nil then
564
- ____valueByLevel_index_27 = (defaultValueByLevel or emptyArray())[level + 1]
634
+ local ____valueByLevel_index_33 = valueByLevel[level + 1]
635
+ if ____valueByLevel_index_33 == nil then
636
+ ____valueByLevel_index_33 = (defaultValueByLevel or emptyArray())[level + 1]
565
637
  end
566
- local ____valueByLevel_index_27_28 = ____valueByLevel_index_27
567
- if ____valueByLevel_index_27_28 == nil then
568
- ____valueByLevel_index_27_28 = self.defaultValue
638
+ local ____valueByLevel_index_33_34 = ____valueByLevel_index_33
639
+ if ____valueByLevel_index_33_34 == nil then
640
+ ____valueByLevel_index_33_34 = self.defaultValue
569
641
  end
570
- local previousValue = ____valueByLevel_index_27_28
642
+ local previousValue = ____valueByLevel_index_33_34
571
643
  valueByLevel[level + 1] = value
572
- self:invokeValueChangeEvent(
573
- instance,
574
- self,
575
- level,
576
- previousValue,
577
- value
578
- )
579
- return true
644
+ return previousValue
580
645
  end
581
646
  end
582
647
  if not self:hasNativeFieldValue(objectDataEntryId) then
583
- return false
648
+ return nil
584
649
  end
585
650
  local previousValue = self:getNativeFieldValue(instance, level)
586
651
  if value ~= previousValue and not self:setNativeFieldValue(instance, level, value) then
587
- return false
652
+ return nil
588
653
  end
589
- self:invokeValueChangeEvent(
590
- instance,
591
- self,
592
- level,
593
- previousValue,
594
- value
595
- )
596
- return true
654
+ return previousValue
597
655
  end
598
656
  function ObjectLevelField.prototype.calculateActualValue(self, instance, level)
599
- local ____opt_31 = self.originalValueByLevelByInstance
600
- local ____opt_29 = ____opt_31 and ____opt_31[instance]
601
- local originalValue = ____opt_29 and ____opt_29[level]
602
- local ____opt_33 = self.modifiersByInstance
603
- local modifiers = ____opt_33 and ____opt_33[instance]
657
+ local ____opt_37 = self.originalValueByLevelByInstance
658
+ local ____opt_35 = ____opt_37 and ____opt_37[instance]
659
+ local originalValue = ____opt_35 and ____opt_35[level]
660
+ local ____opt_39 = self.modifiersByInstance
661
+ local modifiers = ____opt_39 and ____opt_39[instance]
604
662
  if originalValue ~= nil then
605
663
  local value = originalValue
606
664
  if modifiers ~= nil then
@@ -18,3 +18,4 @@ export declare const random: {
18
18
  <T>(element: T, ...elements: T[]): T;
19
19
  <T>(...elements: T[]): T | undefined;
20
20
  };
21
+ export declare const shuffle: (array: unknown[]) => void;
package/engine/random.lua CHANGED
@@ -28,4 +28,12 @@ ____exports.random = function(...)
28
28
  ...
29
29
  ))
30
30
  end
31
+ ____exports.shuffle = function(array)
32
+ for i = #array - 1, 1 do
33
+ local j = getRandomInt(0, i)
34
+ local value = array[i + 1]
35
+ array[i + 1] = array[j + 1]
36
+ array[j + 1] = value
37
+ end
38
+ end
31
39
  return ____exports
@@ -0,0 +1,4 @@
1
+ /** @noSelfInFile */
2
+ import { ItemBooleanField } from "../../object-field/item";
3
+ export declare const CAN_BE_SOLD_TO_MERCHANTS_ITEM_FIELD: ItemBooleanField & symbol;
4
+ export declare const IS_ACTIVELY_USED_ITEM_FIELD: ItemBooleanField & symbol;
@@ -0,0 +1,6 @@
1
+ local ____exports = {}
2
+ local ____item = require("engine.object-field.item")
3
+ local ItemBooleanField = ____item.ItemBooleanField
4
+ ____exports.CAN_BE_SOLD_TO_MERCHANTS_ITEM_FIELD = ItemBooleanField:create(fourCC("ipaw"))
5
+ ____exports.IS_ACTIVELY_USED_ITEM_FIELD = ItemBooleanField:create(fourCC("iusa"))
6
+ return ____exports
@@ -1,6 +1,12 @@
1
1
  /** @noSelfInFile */
2
- import { UnitClassificationsField, UnitFlyHeightField, UnitPropulsionWindowField, UnitScalingValueField } from "../../object-field/unit";
3
- export declare const PROPULSION_WINDOW_UNIT_FLOAT_FIELD: UnitPropulsionWindowField & symbol;
4
- export declare const UNIT_CLASSIFICATIONS_FIELD: UnitClassificationsField & symbol;
5
- export declare const FLY_HEIGHT_UNIT_FLOAT_FIELD: UnitFlyHeightField & symbol;
6
- export declare const SCALING_VALUE_UNIT_FLOAT_FIELD: UnitScalingValueField & symbol;
2
+ import { UnitClassificationsField, UnitFloatField, UnitFlyHeightField, UnitHealthRegenerationTypeField, UnitIntegerField, UnitPropulsionWindowField, UnitScalingValueField } from "../../object-field/unit";
3
+ export declare const PROPULSION_WINDOW_UNIT_FIELD: UnitPropulsionWindowField & symbol;
4
+ export declare const CLASSIFICATIONS_UNIT_FIELD: UnitClassificationsField & symbol;
5
+ export declare const FLY_HEIGHT_UNIT_FIELD: UnitFlyHeightField & symbol;
6
+ export declare const SCALING_VALUE_UNIT_FIELD: UnitScalingValueField & symbol;
7
+ export declare const HEALTH_REGENERATION_RATE_UNIT_FIELD: UnitFloatField & symbol;
8
+ export declare const MANA_REGENERATION_RATE_UNIT_FIELD: UnitFloatField & symbol;
9
+ export declare const HEALTH_REGENERATION_TYPE_UNIT_FIELD: UnitHealthRegenerationTypeField & symbol;
10
+ export declare const STRENGTH_UNIT_FIELD: UnitIntegerField<number> & symbol;
11
+ export declare const AGILITY_UNIT_FIELD: UnitIntegerField<number> & symbol;
12
+ export declare const INTELLIGENCE_UNIT_FIELD: UnitIntegerField<number> & symbol;
@@ -1,11 +1,20 @@
1
1
  local ____exports = {}
2
2
  local ____unit = require("engine.object-field.unit")
3
3
  local UnitClassificationsField = ____unit.UnitClassificationsField
4
+ local UnitFloatField = ____unit.UnitFloatField
4
5
  local UnitFlyHeightField = ____unit.UnitFlyHeightField
6
+ local UnitHealthRegenerationTypeField = ____unit.UnitHealthRegenerationTypeField
7
+ local UnitIntegerField = ____unit.UnitIntegerField
5
8
  local UnitPropulsionWindowField = ____unit.UnitPropulsionWindowField
6
9
  local UnitScalingValueField = ____unit.UnitScalingValueField
7
- ____exports.PROPULSION_WINDOW_UNIT_FLOAT_FIELD = UnitPropulsionWindowField:create(fourCC("urpw"))
8
- ____exports.UNIT_CLASSIFICATIONS_FIELD = UnitClassificationsField:create(fourCC("utyp"))
9
- ____exports.FLY_HEIGHT_UNIT_FLOAT_FIELD = UnitFlyHeightField:create(fourCC("ufyh"))
10
- ____exports.SCALING_VALUE_UNIT_FLOAT_FIELD = UnitScalingValueField:create(fourCC("usca"))
10
+ ____exports.PROPULSION_WINDOW_UNIT_FIELD = UnitPropulsionWindowField:create(fourCC("urpw"))
11
+ ____exports.CLASSIFICATIONS_UNIT_FIELD = UnitClassificationsField:create(fourCC("utyp"))
12
+ ____exports.FLY_HEIGHT_UNIT_FIELD = UnitFlyHeightField:create(fourCC("ufyh"))
13
+ ____exports.SCALING_VALUE_UNIT_FIELD = UnitScalingValueField:create(fourCC("usca"))
14
+ ____exports.HEALTH_REGENERATION_RATE_UNIT_FIELD = UnitFloatField:create(fourCC("uhpr"))
15
+ ____exports.MANA_REGENERATION_RATE_UNIT_FIELD = UnitFloatField:create(fourCC("umpr"))
16
+ ____exports.HEALTH_REGENERATION_TYPE_UNIT_FIELD = UnitHealthRegenerationTypeField:create(fourCC("uhrt"))
17
+ ____exports.STRENGTH_UNIT_FIELD = UnitIntegerField:create(fourCC("ustc"))
18
+ ____exports.AGILITY_UNIT_FIELD = UnitIntegerField:create(fourCC("uagc"))
19
+ ____exports.INTELLIGENCE_UNIT_FIELD = UnitIntegerField:create(fourCC("uinc"))
11
20
  return ____exports
package/engine/unit.d.ts CHANGED
@@ -19,8 +19,11 @@ import "./internal/unit/invulnerability-counter";
19
19
  import "./internal/unit/detach-missiles";
20
20
  import "./internal/unit/main-selected";
21
21
  import "./internal/unit/add-item-to-slot-init";
22
+ import "./internal/unit/attributes";
22
23
  import "./internal/unit/fly-height";
23
24
  import "./internal/unit/scale";
25
+ import "./internal/unit/interrupts";
26
+ import "./internal/unit/range-event";
24
27
  import "./internal/unit/band-aids/ancestral-spirit-cannibalize";
25
28
  export { Unit, DamagingEvent, DamageEvent } from "./internal/unit";
26
29
  export * from "./internal/unit+damage";
package/engine/unit.lua CHANGED
@@ -19,8 +19,11 @@ require("engine.internal.unit.invulnerability-counter")
19
19
  require("engine.internal.unit.detach-missiles")
20
20
  require("engine.internal.unit.main-selected")
21
21
  require("engine.internal.unit.add-item-to-slot-init")
22
+ require("engine.internal.unit.attributes")
22
23
  require("engine.internal.unit.fly-height")
23
24
  require("engine.internal.unit.scale")
25
+ require("engine.internal.unit.interrupts")
26
+ require("engine.internal.unit.range-event")
24
27
  require("engine.internal.unit.band-aids.ancestral-spirit-cannibalize")
25
28
  do
26
29
  local ____unit = require("engine.internal.unit")
package/lualib_bundle.lua CHANGED
@@ -2241,7 +2241,7 @@ local function __TS__SourceMapTraceBack(fileName, sourceMap)
2241
2241
  end
2242
2242
  local result = string.gsub(
2243
2243
  trace,
2244
- "(%S+)%.lua:(%d+)",
2244
+ "([^%s<]+)%.lua:(%d+)",
2245
2245
  function(file, line) return replacer(nil, file .. ".lua", file .. ".ts", line) end
2246
2246
  )
2247
2247
  local function stringReplacer(____, file, line)
package/math.d.ts CHANGED
@@ -23,6 +23,8 @@ export declare const floor: typeof math.floor;
23
23
  export declare const log: typeof math.log;
24
24
  export declare const max: typeof math.max;
25
25
  export declare const min: typeof math.min;
26
+ export declare const sum: (x: number, ...numbers: number[]) => number;
27
+ export declare const product: (x: number, ...numbers: number[]) => number;
26
28
  /** Returns the signum function of the argument;
27
29
  * zero if the argument is zero,
28
30
  * 1.0 if the argument is greater than zero,
package/math.lua CHANGED
@@ -39,6 +39,20 @@ ____exports.floor = math.floor
39
39
  ____exports.log = math.log
40
40
  ____exports.max = math.max
41
41
  ____exports.min = math.min
42
+ ____exports.sum = function(x, ...)
43
+ for i = 1, select("#", ...) do
44
+ local number = select(i, ...)
45
+ x = x + number
46
+ end
47
+ return x
48
+ end
49
+ ____exports.product = function(x, ...)
50
+ for i = 1, select("#", ...) do
51
+ local number = select(i, ...)
52
+ x = x * number
53
+ end
54
+ return x
55
+ end
42
56
  --- Returns the signum function of the argument;
43
57
  -- zero if the argument is zero,
44
58
  -- 1.0 if the argument is greater than zero,