warscript 0.0.1-dev.87b6c38 → 0.0.1-dev.8895ff6
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.
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +4 -2
- package/engine/behavior.lua +69 -11
- package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
- package/engine/behaviour/unit/stun-immunity.lua +5 -4
- package/engine/behaviour/unit.lua +13 -3
- package/engine/buff.d.ts +7 -2
- package/engine/buff.lua +42 -24
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +2 -0
- package/engine/internal/unit/bonus.lua +10 -0
- package/engine/internal/unit/fly-height.lua +3 -3
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/scale.lua +3 -3
- package/engine/internal/unit-missile-launch.lua +12 -5
- package/engine/internal/unit.d.ts +1 -8
- package/engine/internal/unit.lua +16 -69
- package/engine/local-client.d.ts +1 -1
- package/engine/local-client.lua +4 -4
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/destructible-type.d.ts +12 -0
- package/engine/object-data/entry/destructible-type.lua +78 -0
- package/engine/object-field/unit.d.ts +7 -4
- package/engine/object-field/unit.lua +4 -0
- package/engine/object-field.d.ts +2 -0
- package/engine/object-field.lua +171 -115
- package/engine/standard/fields/unit.d.ts +11 -5
- package/engine/standard/fields/unit.lua +13 -4
- package/engine/unit.d.ts +2 -0
- package/engine/unit.lua +2 -0
- package/objutil/buff.lua +9 -7
- package/package.json +1 -1
- package/utility/linked-map.d.ts +26 -0
- package/utility/linked-map.lua +66 -0
- package/utility/linked-set.lua +4 -0
- package/utility/records.lua +20 -1
package/engine/object-field.lua
CHANGED
|
@@ -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
|
|
155
|
-
local
|
|
156
|
-
local
|
|
157
|
-
if
|
|
158
|
-
|
|
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
|
-
|
|
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
|
|
207
|
-
if
|
|
208
|
-
|
|
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
|
|
211
|
-
if
|
|
212
|
-
|
|
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
|
|
238
|
+
return ____self_valueByInstance_instance_6_7
|
|
215
239
|
end
|
|
216
240
|
end
|
|
217
|
-
local
|
|
218
|
-
if
|
|
219
|
-
|
|
241
|
+
local ____temp_8 = self:getNativeFieldValue(instance)
|
|
242
|
+
if ____temp_8 == nil then
|
|
243
|
+
____temp_8 = self.defaultValue
|
|
220
244
|
end
|
|
221
|
-
return
|
|
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
|
|
230
|
-
if
|
|
231
|
-
|
|
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
|
|
234
|
-
if
|
|
235
|
-
|
|
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 =
|
|
261
|
+
local previousValue = ____self_valueByInstance_instance_9_10
|
|
238
262
|
self.valueByInstance[instance] = value
|
|
239
|
-
|
|
240
|
-
return true
|
|
263
|
+
return previousValue
|
|
241
264
|
end
|
|
242
265
|
end
|
|
243
266
|
if not self:hasNativeFieldValue(objectDataEntryId) then
|
|
244
|
-
return
|
|
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
|
|
271
|
+
return nil
|
|
249
272
|
end
|
|
250
|
-
|
|
251
|
-
return true
|
|
273
|
+
return previousValue
|
|
252
274
|
end
|
|
253
275
|
function ObjectField.prototype.calculateActualValue(self, instance)
|
|
254
|
-
local
|
|
255
|
-
local originalValue =
|
|
256
|
-
local
|
|
257
|
-
local modifiers =
|
|
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
|
|
345
|
+
local ____temp_16
|
|
323
346
|
if index == nil then
|
|
324
|
-
|
|
347
|
+
____temp_16 = value
|
|
325
348
|
else
|
|
326
|
-
local
|
|
327
|
-
if
|
|
328
|
-
|
|
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
|
-
|
|
353
|
+
____temp_16 = ____value_index_15
|
|
331
354
|
end
|
|
332
|
-
return
|
|
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
|
|
365
|
+
local ____temp_18
|
|
343
366
|
if index == nil then
|
|
344
|
-
|
|
367
|
+
____temp_18 = value
|
|
345
368
|
else
|
|
346
|
-
local
|
|
347
|
-
if
|
|
348
|
-
|
|
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
|
-
|
|
373
|
+
____temp_18 = ____value_index_17
|
|
351
374
|
end
|
|
352
|
-
return
|
|
375
|
+
return ____temp_18
|
|
353
376
|
end
|
|
354
377
|
end
|
|
355
378
|
if index ~= nil then
|
|
@@ -394,18 +417,18 @@ 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
|
|
398
|
-
if
|
|
399
|
-
|
|
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
|
|
424
|
+
return ____valueByLevel_index_19
|
|
402
425
|
end
|
|
403
426
|
end
|
|
404
427
|
return self.defaultValue
|
|
405
428
|
end
|
|
406
|
-
local
|
|
407
|
-
local
|
|
408
|
-
local originalValue =
|
|
429
|
+
local ____opt_22 = self.originalValueByLevelByInstance
|
|
430
|
+
local ____opt_20 = ____opt_22 and ____opt_22[entry]
|
|
431
|
+
local originalValue = ____opt_20 and ____opt_20[level]
|
|
409
432
|
if originalValue ~= nil then
|
|
410
433
|
return originalValue
|
|
411
434
|
end
|
|
@@ -449,6 +472,7 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
|
449
472
|
valueByLevel[level + 1] = value
|
|
450
473
|
return true
|
|
451
474
|
end
|
|
475
|
+
local previousOriginalValue
|
|
452
476
|
local modifiersByInstance = self.modifiersByInstance
|
|
453
477
|
if modifiersByInstance ~= nil then
|
|
454
478
|
local modifiers = modifiersByInstance[entry]
|
|
@@ -458,11 +482,57 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
|
458
482
|
originalValueByLevelByInstance = mutableWeakLuaMap()
|
|
459
483
|
self.originalValueByLevelByInstance = originalValueByLevelByInstance
|
|
460
484
|
end
|
|
461
|
-
getOrPut(originalValueByLevelByInstance, entry, mutableLuaMap)
|
|
485
|
+
local originalValueByLevel = getOrPut(originalValueByLevelByInstance, entry, mutableLuaMap)
|
|
486
|
+
previousOriginalValue = originalValueByLevel[level]
|
|
487
|
+
if value == previousOriginalValue then
|
|
488
|
+
return true
|
|
489
|
+
end
|
|
490
|
+
originalValueByLevel[level] = value
|
|
462
491
|
value = self:calculateActualValue(entry, level)
|
|
463
492
|
end
|
|
464
493
|
end
|
|
465
|
-
|
|
494
|
+
local previousValue = self:setActualValue(entry, level, value)
|
|
495
|
+
if previousValue == nil then
|
|
496
|
+
return false
|
|
497
|
+
end
|
|
498
|
+
if previousOriginalValue ~= nil or value ~= previousValue then
|
|
499
|
+
local ____self_invokeValueChangeEvent_26 = self.invokeValueChangeEvent
|
|
500
|
+
local ____entry_25 = entry
|
|
501
|
+
local ____previousOriginalValue_24 = previousOriginalValue
|
|
502
|
+
if ____previousOriginalValue_24 == nil then
|
|
503
|
+
____previousOriginalValue_24 = previousValue
|
|
504
|
+
end
|
|
505
|
+
____self_invokeValueChangeEvent_26(
|
|
506
|
+
self,
|
|
507
|
+
____entry_25,
|
|
508
|
+
self,
|
|
509
|
+
level,
|
|
510
|
+
____previousOriginalValue_24,
|
|
511
|
+
value
|
|
512
|
+
)
|
|
513
|
+
end
|
|
514
|
+
return true
|
|
515
|
+
end
|
|
516
|
+
function ObjectLevelField.prototype.updateActualValue(self, instance, level)
|
|
517
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
518
|
+
if modifiersByInstance == nil then
|
|
519
|
+
return
|
|
520
|
+
end
|
|
521
|
+
local modifiers = modifiersByInstance[instance]
|
|
522
|
+
if modifiers == nil or modifiers.size == 0 then
|
|
523
|
+
return
|
|
524
|
+
end
|
|
525
|
+
if level == nil then
|
|
526
|
+
for i = 0, self:getLevelCount(instance) - 1 do
|
|
527
|
+
self:updateActualValue(instance, i)
|
|
528
|
+
end
|
|
529
|
+
return
|
|
530
|
+
end
|
|
531
|
+
self:setActualValue(
|
|
532
|
+
instance,
|
|
533
|
+
level,
|
|
534
|
+
self:calculateActualValue(instance, level)
|
|
535
|
+
)
|
|
466
536
|
end
|
|
467
537
|
function ObjectLevelField.prototype.applyModifier(self, instance, modifier)
|
|
468
538
|
local modifiersByInstance = self.modifiersByInstance
|
|
@@ -479,11 +549,11 @@ function ObjectLevelField.prototype.applyModifier(self, instance, modifier)
|
|
|
479
549
|
local originalValueByLevel = getOrPut(originalValueByLevelByInstance, instance, mutableLuaMap)
|
|
480
550
|
local levelCount = self:getLevelCount(instance)
|
|
481
551
|
for level = 0, levelCount - 1 do
|
|
482
|
-
local
|
|
483
|
-
if
|
|
484
|
-
|
|
552
|
+
local ____originalValueByLevel_level_27 = originalValueByLevel[level]
|
|
553
|
+
if ____originalValueByLevel_level_27 == nil then
|
|
554
|
+
____originalValueByLevel_level_27 = self:getActualValue(instance, level)
|
|
485
555
|
end
|
|
486
|
-
originalValueByLevel[level] =
|
|
556
|
+
originalValueByLevel[level] = ____originalValueByLevel_level_27
|
|
487
557
|
self:setActualValue(
|
|
488
558
|
instance,
|
|
489
559
|
level,
|
|
@@ -530,23 +600,23 @@ function ObjectLevelField.prototype.getActualValue(self, instance, level)
|
|
|
530
600
|
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
531
601
|
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
|
|
532
602
|
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
533
|
-
local
|
|
534
|
-
local
|
|
535
|
-
if
|
|
536
|
-
|
|
603
|
+
local ____opt_28 = self.valueByInstance[instance]
|
|
604
|
+
local ____temp_30 = ____opt_28 and ____opt_28[level + 1]
|
|
605
|
+
if ____temp_30 == nil then
|
|
606
|
+
____temp_30 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
537
607
|
end
|
|
538
|
-
local
|
|
539
|
-
if
|
|
540
|
-
|
|
608
|
+
local ____temp_30_31 = ____temp_30
|
|
609
|
+
if ____temp_30_31 == nil then
|
|
610
|
+
____temp_30_31 = self.defaultValue
|
|
541
611
|
end
|
|
542
|
-
return
|
|
612
|
+
return ____temp_30_31
|
|
543
613
|
end
|
|
544
614
|
end
|
|
545
|
-
local
|
|
546
|
-
if
|
|
547
|
-
|
|
615
|
+
local ____temp_32 = self:getNativeFieldValue(instance, level)
|
|
616
|
+
if ____temp_32 == nil then
|
|
617
|
+
____temp_32 = self.defaultValue
|
|
548
618
|
end
|
|
549
|
-
return
|
|
619
|
+
return ____temp_32
|
|
550
620
|
end
|
|
551
621
|
function ObjectLevelField.prototype.setActualValue(self, instance, level, value)
|
|
552
622
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
@@ -559,48 +629,34 @@ function ObjectLevelField.prototype.setActualValue(self, instance, level, value)
|
|
|
559
629
|
valueByLevel = {}
|
|
560
630
|
self.valueByInstance[instance] = valueByLevel
|
|
561
631
|
end
|
|
562
|
-
local
|
|
563
|
-
if
|
|
564
|
-
|
|
632
|
+
local ____valueByLevel_index_33 = valueByLevel[level + 1]
|
|
633
|
+
if ____valueByLevel_index_33 == nil then
|
|
634
|
+
____valueByLevel_index_33 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
565
635
|
end
|
|
566
|
-
local
|
|
567
|
-
if
|
|
568
|
-
|
|
636
|
+
local ____valueByLevel_index_33_34 = ____valueByLevel_index_33
|
|
637
|
+
if ____valueByLevel_index_33_34 == nil then
|
|
638
|
+
____valueByLevel_index_33_34 = self.defaultValue
|
|
569
639
|
end
|
|
570
|
-
local previousValue =
|
|
640
|
+
local previousValue = ____valueByLevel_index_33_34
|
|
571
641
|
valueByLevel[level + 1] = value
|
|
572
|
-
|
|
573
|
-
instance,
|
|
574
|
-
self,
|
|
575
|
-
level,
|
|
576
|
-
previousValue,
|
|
577
|
-
value
|
|
578
|
-
)
|
|
579
|
-
return true
|
|
642
|
+
return previousValue
|
|
580
643
|
end
|
|
581
644
|
end
|
|
582
645
|
if not self:hasNativeFieldValue(objectDataEntryId) then
|
|
583
|
-
return
|
|
646
|
+
return nil
|
|
584
647
|
end
|
|
585
648
|
local previousValue = self:getNativeFieldValue(instance, level)
|
|
586
649
|
if value ~= previousValue and not self:setNativeFieldValue(instance, level, value) then
|
|
587
|
-
return
|
|
650
|
+
return nil
|
|
588
651
|
end
|
|
589
|
-
|
|
590
|
-
instance,
|
|
591
|
-
self,
|
|
592
|
-
level,
|
|
593
|
-
previousValue,
|
|
594
|
-
value
|
|
595
|
-
)
|
|
596
|
-
return true
|
|
652
|
+
return previousValue
|
|
597
653
|
end
|
|
598
654
|
function ObjectLevelField.prototype.calculateActualValue(self, instance, level)
|
|
599
|
-
local
|
|
600
|
-
local
|
|
601
|
-
local originalValue =
|
|
602
|
-
local
|
|
603
|
-
local modifiers =
|
|
655
|
+
local ____opt_37 = self.originalValueByLevelByInstance
|
|
656
|
+
local ____opt_35 = ____opt_37 and ____opt_37[instance]
|
|
657
|
+
local originalValue = ____opt_35 and ____opt_35[level]
|
|
658
|
+
local ____opt_39 = self.modifiersByInstance
|
|
659
|
+
local modifiers = ____opt_39 and ____opt_39[instance]
|
|
604
660
|
if originalValue ~= nil then
|
|
605
661
|
local value = originalValue
|
|
606
662
|
if modifiers ~= nil then
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
-
import { UnitClassificationsField, UnitFlyHeightField, UnitPropulsionWindowField, UnitScalingValueField } from "../../object-field/unit";
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
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.
|
|
8
|
-
____exports.
|
|
9
|
-
____exports.
|
|
10
|
-
____exports.
|
|
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,10 @@ 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";
|
|
24
26
|
import "./internal/unit/band-aids/ancestral-spirit-cannibalize";
|
|
25
27
|
export { Unit, DamagingEvent, DamageEvent } from "./internal/unit";
|
|
26
28
|
export * from "./internal/unit+damage";
|
package/engine/unit.lua
CHANGED
|
@@ -19,8 +19,10 @@ 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")
|
|
24
26
|
require("engine.internal.unit.band-aids.ancestral-spirit-cannibalize")
|
|
25
27
|
do
|
|
26
28
|
local ____unit = require("engine.internal.unit")
|
package/objutil/buff.lua
CHANGED
|
@@ -29,6 +29,8 @@ local ____timer = require("core.types.timer")
|
|
|
29
29
|
local Timer = ____timer.Timer
|
|
30
30
|
local ____exception = require("exception")
|
|
31
31
|
local IllegalStateException = ____exception.IllegalStateException
|
|
32
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
33
|
+
local LinkedMap = ____linked_2Dmap.LinkedMap
|
|
32
34
|
local ____assert = _G.assert
|
|
33
35
|
local ____pairs = _G.pairs
|
|
34
36
|
____exports.BuffDefinition = __TS__Class()
|
|
@@ -461,7 +463,7 @@ local buffs = setmetatable(
|
|
|
461
463
|
{
|
|
462
464
|
__mode = "k",
|
|
463
465
|
__index = function(self, unit)
|
|
464
|
-
local ____table =
|
|
466
|
+
local ____table = __TS__New(LinkedMap)
|
|
465
467
|
self[unit] = ____table
|
|
466
468
|
return ____table
|
|
467
469
|
end
|
|
@@ -494,7 +496,7 @@ function Buff.prototype.____constructor(self, unit, source, duration, level, pre
|
|
|
494
496
|
end
|
|
495
497
|
local constructor = self.constructor
|
|
496
498
|
local instances = buffs[unit]
|
|
497
|
-
local instance = instances
|
|
499
|
+
local instance = instances:get(constructor)
|
|
498
500
|
if instance then
|
|
499
501
|
instance:destroy()
|
|
500
502
|
if not instance.destroyed then
|
|
@@ -507,7 +509,7 @@ function Buff.prototype.____constructor(self, unit, source, duration, level, pre
|
|
|
507
509
|
)
|
|
508
510
|
end
|
|
509
511
|
end
|
|
510
|
-
instances
|
|
512
|
+
instances:put(constructor, self)
|
|
511
513
|
if preset then
|
|
512
514
|
local unitHandle = unit.handle
|
|
513
515
|
local slowPoisonMethod = not preset.positive and not preset.magic
|
|
@@ -586,13 +588,13 @@ function Buff.apply(self, ...)
|
|
|
586
588
|
end
|
|
587
589
|
end
|
|
588
590
|
function Buff.getInstance(self, unit)
|
|
589
|
-
return buffs[unit]
|
|
591
|
+
return buffs[unit]:get(self)
|
|
590
592
|
end
|
|
591
593
|
function Buff.isApplied(self, unit)
|
|
592
|
-
return buffs[unit]
|
|
594
|
+
return buffs[unit]:get(self) ~= nil
|
|
593
595
|
end
|
|
594
596
|
function Buff.ifApplied(self, unit, action)
|
|
595
|
-
local instance = buffs[unit]
|
|
597
|
+
local instance = buffs[unit]:get(self)
|
|
596
598
|
if instance then
|
|
597
599
|
____assert(__TS__InstanceOf(instance, self))
|
|
598
600
|
action(instance)
|
|
@@ -615,7 +617,7 @@ function Buff.prototype.destroy(self)
|
|
|
615
617
|
if self.preset then
|
|
616
618
|
self.unit:removeAbility(self.preset.buffId)
|
|
617
619
|
end
|
|
618
|
-
buffs[self.unit]
|
|
620
|
+
buffs[self.unit]:remove(self.constructor)
|
|
619
621
|
self.destroyed = true
|
|
620
622
|
end
|
|
621
623
|
function Buff.prototype.onDispel(self, source)
|
package/package.json
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { ReadonlyLinkedSet } from "./linked-set";
|
|
3
|
+
type IteratorState<K extends AnyNotNil, V> = {
|
|
4
|
+
n?: K;
|
|
5
|
+
t: LuaMap<K, K>;
|
|
6
|
+
v: LuaMap<K, V>;
|
|
7
|
+
};
|
|
8
|
+
type OneSidedTypeGuard = {
|
|
9
|
+
readonly __oneSidedTypeGuard: unique symbol;
|
|
10
|
+
};
|
|
11
|
+
export interface LinkedMap<K extends AnyNotNil, V> extends LuaPairsIterable<K, V> {
|
|
12
|
+
readonly __linkedSet: unique symbol;
|
|
13
|
+
}
|
|
14
|
+
export declare class LinkedMap<K extends AnyNotNil, V> {
|
|
15
|
+
private k;
|
|
16
|
+
private v;
|
|
17
|
+
get keys(): ReadonlyLinkedSet<K>;
|
|
18
|
+
get(key: K): V | undefined;
|
|
19
|
+
getOrPut(key: K, defaultValue: (this: void) => V): V;
|
|
20
|
+
put(key: K, value: V): void;
|
|
21
|
+
remove(key: K): boolean;
|
|
22
|
+
contains(key: AnyNotNil): key is K & OneSidedTypeGuard;
|
|
23
|
+
get size(): number;
|
|
24
|
+
protected __pairs(this: LinkedMap<K, V>): LuaIterator<LuaMultiReturn<[K | undefined, V | undefined]>, IteratorState<K, V>>;
|
|
25
|
+
}
|
|
26
|
+
export {};
|