warscript 0.0.1-dev.2a08418 → 0.0.1-dev.2ad49fd
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/core/types/frame.lua +47 -1
- package/core/types/sound.lua +1 -1
- 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/ability/apply-buff.lua +4 -4
- package/engine/behaviour/ability/damage.d.ts +3 -0
- package/engine/behaviour/ability/damage.lua +8 -2
- package/engine/behaviour/ability.d.ts +11 -6
- package/engine/behaviour/ability.lua +31 -1
- 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 +58 -20
- package/engine/buff.lua +300 -152
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- 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 +6 -0
- package/engine/internal/unit/bonus.lua +33 -3
- 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/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.lua +3 -3
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit-missile-launch.lua +12 -5
- package/engine/internal/unit.d.ts +2 -9
- package/engine/internal/unit.lua +79 -121
- 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/auxiliary/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -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/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type.d.ts +2 -0
- package/engine/object-data/entry/ability-type.lua +84 -4
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- package/engine/object-data/entry/destructible-type.d.ts +27 -1
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/unit-type.d.ts +4 -0
- package/engine/object-data/entry/unit-type.lua +76 -32
- package/engine/object-field/ability.lua +2 -2
- package/engine/object-field/unit.d.ts +7 -4
- package/engine/object-field/unit.lua +4 -0
- package/engine/object-field.d.ts +3 -1
- package/engine/object-field.lua +177 -119
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +8 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/unit.d.ts +11 -5
- package/engine/standard/fields/unit.lua +13 -4
- package/engine/unit.d.ts +3 -0
- package/engine/unit.lua +3 -0
- package/lualib_bundle.lua +1 -1
- package/objutil/buff.lua +9 -7
- package/objutil/object.lua +1 -1
- package/operation.lua +1 -4
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/utility/linked-map.d.ts +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +2 -1
- package/utility/linked-set.lua +21 -0
- package/utility/records.lua +20 -1
- /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/buff.lua
CHANGED
|
@@ -42,6 +42,7 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
42
42
|
local ____unit = require("engine.behaviour.unit")
|
|
43
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
44
44
|
local ____arrays = require("utility.arrays")
|
|
45
|
+
local emptyArray = ____arrays.emptyArray
|
|
45
46
|
local forEach = ____arrays.forEach
|
|
46
47
|
local ____event = require("event")
|
|
47
48
|
local Event = ____event.Event
|
|
@@ -53,6 +54,10 @@ local ____destructable = require("core.types.destructable")
|
|
|
53
54
|
local Destructable = ____destructable.Destructable
|
|
54
55
|
local ____ability = require("engine.standard.fields.ability")
|
|
55
56
|
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
57
|
+
local ____ability = require("engine.behaviour.ability")
|
|
58
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
59
|
+
local ____records = require("utility.records")
|
|
60
|
+
local sortedKeysUnnested = ____records.sortedKeysUnnested
|
|
56
61
|
local getUnitAbility = BlzGetUnitAbility
|
|
57
62
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
58
63
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -98,9 +103,11 @@ local buffParametersKeys = {
|
|
|
98
103
|
damageIncrease = true,
|
|
99
104
|
damageIncreaseFactor = true,
|
|
100
105
|
armorIncrease = true,
|
|
101
|
-
|
|
106
|
+
maxHealthIncrease = true,
|
|
107
|
+
maxManaIncrease = true,
|
|
102
108
|
attackSpeedIncreaseFactor = true,
|
|
103
109
|
movementSpeedIncreaseFactor = true,
|
|
110
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
104
111
|
evasionProbability = true,
|
|
105
112
|
missProbability = true,
|
|
106
113
|
damageFactor = true,
|
|
@@ -120,6 +127,9 @@ local buffParametersKeys = {
|
|
|
120
127
|
maximumAutoAttackCount = true,
|
|
121
128
|
maximumDamageDealtEventCount = true,
|
|
122
129
|
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
123
133
|
uniqueGroup = true,
|
|
124
134
|
damageOnExpiration = true,
|
|
125
135
|
healingOnExpiration = true,
|
|
@@ -176,6 +186,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
176
186
|
end
|
|
177
187
|
end
|
|
178
188
|
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
179
190
|
"turnsIntoGhost",
|
|
180
191
|
"stuns",
|
|
181
192
|
"ignoresStunImmunity",
|
|
@@ -188,8 +199,11 @@ local buffNumberParameters = {
|
|
|
188
199
|
"durationIncreaseOnAutoAttack",
|
|
189
200
|
"attackSpeedIncreaseFactor",
|
|
190
201
|
"movementSpeedIncreaseFactor",
|
|
202
|
+
"manaRegenerationRateIncreaseFactor",
|
|
191
203
|
"evasionProbability",
|
|
192
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
193
207
|
"damageFactor",
|
|
194
208
|
"receivedDamageFactor",
|
|
195
209
|
"maximumAutoAttackCount",
|
|
@@ -203,6 +217,8 @@ local buffNumberParameters = {
|
|
|
203
217
|
"healingOverDuration",
|
|
204
218
|
"damageOnExpiration",
|
|
205
219
|
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
206
222
|
"abilityCooldownFactor"
|
|
207
223
|
}
|
|
208
224
|
local unsuccessfulApplicationMarker = {}
|
|
@@ -322,33 +338,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
322
338
|
local polarity
|
|
323
339
|
local resistanceType
|
|
324
340
|
local ability
|
|
341
|
+
local abilityBehavior
|
|
325
342
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
326
343
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
327
344
|
polarity = resistanceTypeOrPolarity
|
|
328
345
|
resistanceType = abilityOrParametersOrResistanceType
|
|
329
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
346
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
347
|
+
abilityBehavior = parametersOrAbility
|
|
348
|
+
ability = abilityBehavior.ability
|
|
349
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
330
350
|
ability = parametersOrAbility
|
|
331
|
-
|
|
332
|
-
ability = nil
|
|
351
|
+
elseif parametersOrAbility ~= nil then
|
|
333
352
|
parameters = parametersOrAbility
|
|
334
353
|
end
|
|
335
354
|
else
|
|
336
355
|
typeId = typeIdOrTypeIds
|
|
337
356
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
338
357
|
resistanceType = resistanceTypeOrPolarity
|
|
339
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
358
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
359
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
360
|
+
ability = abilityBehavior.ability
|
|
361
|
+
parameters = parametersOrAbility
|
|
362
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
340
363
|
ability = abilityOrParametersOrResistanceType
|
|
341
364
|
parameters = parametersOrAbility
|
|
342
|
-
|
|
343
|
-
ability = nil
|
|
365
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
344
366
|
parameters = abilityOrParametersOrResistanceType
|
|
367
|
+
else
|
|
368
|
+
parameters = parametersOrAbility
|
|
345
369
|
end
|
|
346
370
|
end
|
|
371
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
347
372
|
self.typeId = typeId
|
|
348
|
-
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
349
|
-
parameters = ability
|
|
350
|
-
ability = nil
|
|
351
|
-
end
|
|
352
373
|
local defaultParameters = self.constructor.defaultParameters
|
|
353
374
|
local level = parameters and parameters.level or defaultParameters.level
|
|
354
375
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -376,14 +397,15 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
376
397
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
377
398
|
if missProbability ~= nil then
|
|
378
399
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
379
|
-
self[
|
|
400
|
+
self[146] = missProbability
|
|
380
401
|
end
|
|
381
402
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
382
403
|
if buffByTypeId == nil then
|
|
383
404
|
buffByTypeId = {}
|
|
384
405
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
385
406
|
end
|
|
386
|
-
|
|
407
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
408
|
+
local ____opt_15 = self.previousBuff
|
|
387
409
|
if ____opt_15 ~= nil then
|
|
388
410
|
____opt_15:destroy()
|
|
389
411
|
end
|
|
@@ -459,24 +481,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
459
481
|
abilityTypeIds = {}
|
|
460
482
|
self._abilityTypeIds = abilityTypeIds
|
|
461
483
|
end
|
|
462
|
-
for
|
|
484
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
485
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
463
486
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
464
487
|
if addedAbility ~= nil then
|
|
465
488
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
466
489
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
476
|
-
)
|
|
477
|
-
end
|
|
490
|
+
if abilityParameters.isButtonVisible == false then
|
|
491
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
492
|
+
end
|
|
493
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
494
|
+
field[1]:setValue(
|
|
495
|
+
addedAbility,
|
|
496
|
+
resolveNumberValue(ability, level, field[2])
|
|
497
|
+
)
|
|
478
498
|
end
|
|
479
|
-
abilityTypeIds[
|
|
499
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
480
500
|
end
|
|
481
501
|
end
|
|
482
502
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -488,18 +508,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
488
508
|
self._behaviors = behaviors
|
|
489
509
|
end
|
|
490
510
|
end
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
if
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
511
|
+
if parameters ~= nil then
|
|
512
|
+
local additionalParameters = {}
|
|
513
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
514
|
+
if not buffParametersKeys[key] then
|
|
515
|
+
if ability then
|
|
516
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
517
|
+
else
|
|
518
|
+
additionalParameters[key] = parameters[key]
|
|
519
|
+
end
|
|
498
520
|
end
|
|
499
521
|
end
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
522
|
+
if (next(additionalParameters)) ~= nil then
|
|
523
|
+
self.parameters = additionalParameters
|
|
524
|
+
end
|
|
503
525
|
end
|
|
504
526
|
end
|
|
505
527
|
if duration ~= nil and duration > 0 then
|
|
@@ -513,7 +535,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
513
535
|
end
|
|
514
536
|
function Buff.prototype.onAbilityGained(self, ability)
|
|
515
537
|
if __TS__InstanceOf(ability, UnitAbility) then
|
|
516
|
-
local abilityCooldownModifier = self[
|
|
538
|
+
local abilityCooldownModifier = self[148]
|
|
517
539
|
if abilityCooldownModifier then
|
|
518
540
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
519
541
|
end
|
|
@@ -521,24 +543,38 @@ function Buff.prototype.onAbilityGained(self, ability)
|
|
|
521
543
|
end
|
|
522
544
|
function Buff.prototype.onAbilityLost(self, ability)
|
|
523
545
|
if __TS__InstanceOf(ability, UnitAbility) then
|
|
524
|
-
local abilityCooldownModifier = self[
|
|
546
|
+
local abilityCooldownModifier = self[148]
|
|
525
547
|
if abilityCooldownModifier then
|
|
526
548
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
527
549
|
end
|
|
528
550
|
end
|
|
529
551
|
end
|
|
530
552
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
553
|
+
self:flash(
|
|
554
|
+
self[105],
|
|
555
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin",
|
|
556
|
+
widgetOrXOrParametersOrDuration,
|
|
557
|
+
yOrParametersOrDuration,
|
|
558
|
+
parametersOrDuration
|
|
559
|
+
)
|
|
560
|
+
end
|
|
561
|
+
function Buff.prototype.flashSpecialEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
562
|
+
self:flash(
|
|
563
|
+
self[106],
|
|
564
|
+
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin",
|
|
565
|
+
widgetOrXOrParametersOrDuration,
|
|
566
|
+
yOrParametersOrDuration,
|
|
567
|
+
parametersOrDuration
|
|
568
|
+
)
|
|
569
|
+
end
|
|
570
|
+
function Buff.prototype.flash(self, modelPath, attachmentPoint, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
531
571
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
532
|
-
Effect:flash(
|
|
572
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
533
573
|
else
|
|
534
574
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
535
575
|
local ____Effect_40 = Effect
|
|
536
576
|
local ____Effect_flash_41 = Effect.flash
|
|
537
|
-
local ____array_39 = __TS__SparseArrayNew(
|
|
538
|
-
self[105],
|
|
539
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
540
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
541
|
-
)
|
|
577
|
+
local ____array_39 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
542
578
|
local ____isWidgetProvided_38
|
|
543
579
|
if isWidgetProvided then
|
|
544
580
|
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
@@ -552,26 +588,8 @@ function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrPa
|
|
|
552
588
|
)
|
|
553
589
|
end
|
|
554
590
|
end
|
|
555
|
-
function Buff.prototype.
|
|
556
|
-
|
|
557
|
-
local ____Effect_44 = Effect
|
|
558
|
-
local ____Effect_flash_45 = Effect.flash
|
|
559
|
-
local ____array_43 = __TS__SparseArrayNew(
|
|
560
|
-
self[106],
|
|
561
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
562
|
-
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
563
|
-
)
|
|
564
|
-
local ____isWidgetProvided_42
|
|
565
|
-
if isWidgetProvided then
|
|
566
|
-
____isWidgetProvided_42 = duration
|
|
567
|
-
else
|
|
568
|
-
____isWidgetProvided_42 = widgetOrDuration
|
|
569
|
-
end
|
|
570
|
-
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
571
|
-
____Effect_flash_45(
|
|
572
|
-
____Effect_44,
|
|
573
|
-
__TS__SparseArraySpread(____array_43)
|
|
574
|
-
)
|
|
591
|
+
function Buff.prototype.expire(self)
|
|
592
|
+
expireBuff(self)
|
|
575
593
|
end
|
|
576
594
|
function Buff.prototype.onCreate(self)
|
|
577
595
|
end
|
|
@@ -601,29 +619,29 @@ function Buff.prototype.onDestroy(self)
|
|
|
601
619
|
behavior:destroy()
|
|
602
620
|
end
|
|
603
621
|
end
|
|
604
|
-
local previousAbilityCooldownModifier = self[
|
|
622
|
+
local previousAbilityCooldownModifier = self[148]
|
|
605
623
|
if previousAbilityCooldownModifier then
|
|
606
624
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
607
625
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
608
626
|
end
|
|
609
627
|
end
|
|
610
|
-
if self[
|
|
628
|
+
if self[143] then
|
|
611
629
|
unit:decrementInvulnerabilityCounter()
|
|
612
630
|
end
|
|
613
|
-
if self[
|
|
631
|
+
if self[142] then
|
|
614
632
|
unit:decrementDisableAutoAttackCounter()
|
|
615
633
|
end
|
|
616
|
-
if self[
|
|
617
|
-
if self[
|
|
634
|
+
if self[140] then
|
|
635
|
+
if self[141] then
|
|
618
636
|
unit:decrementForceStunCounter()
|
|
619
637
|
end
|
|
620
638
|
unit:decrementStunCounter()
|
|
621
639
|
end
|
|
622
|
-
if self[
|
|
640
|
+
if self[139] then
|
|
623
641
|
unit:decrementGhostCounter()
|
|
624
642
|
end
|
|
625
643
|
if self._abilityTypeIds ~= nil then
|
|
626
|
-
for abilityTypeId in
|
|
644
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
627
645
|
unit:removeAbility(abilityTypeId)
|
|
628
646
|
end
|
|
629
647
|
end
|
|
@@ -656,8 +674,8 @@ function Buff.apply(self, ...)
|
|
|
656
674
|
end
|
|
657
675
|
end
|
|
658
676
|
function Buff.getByTypeId(self, unit, typeId)
|
|
659
|
-
local
|
|
660
|
-
local buff =
|
|
677
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
678
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
661
679
|
if __TS__InstanceOf(buff, self) then
|
|
662
680
|
return buff
|
|
663
681
|
end
|
|
@@ -671,9 +689,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
671
689
|
if self[121] ~= nil then
|
|
672
690
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
673
691
|
end
|
|
674
|
-
if self[
|
|
692
|
+
if self[145] then
|
|
675
693
|
unit:explode()
|
|
676
|
-
elseif self[
|
|
694
|
+
elseif self[144] then
|
|
677
695
|
unit:kill()
|
|
678
696
|
end
|
|
679
697
|
end
|
|
@@ -728,6 +746,18 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
728
746
|
end
|
|
729
747
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
730
748
|
if event.originalAmount ~= 0 then
|
|
749
|
+
local absorbedDamage = min(event.amount * (self[135] or 1), (self[136] or 0) - (self[137] or 0))
|
|
750
|
+
if absorbedDamage > 0 then
|
|
751
|
+
event.amount = event.amount - absorbedDamage
|
|
752
|
+
self[137] = (self[137] or 0) + absorbedDamage
|
|
753
|
+
local ____self__138_44 = self[138]
|
|
754
|
+
if ____self__138_44 == nil then
|
|
755
|
+
____self__138_44 = true
|
|
756
|
+
end
|
|
757
|
+
if ____self__138_44 and self[137] >= (self[136] or 0) then
|
|
758
|
+
self:destroy()
|
|
759
|
+
end
|
|
760
|
+
end
|
|
731
761
|
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
732
762
|
self[133] = damageReceivedEventCount
|
|
733
763
|
if damageReceivedEventCount == self[134] then
|
|
@@ -815,8 +845,8 @@ __TS__SetDescriptor(
|
|
|
815
845
|
return
|
|
816
846
|
end
|
|
817
847
|
self[112] = damageInterval
|
|
818
|
-
local
|
|
819
|
-
local elapsed =
|
|
848
|
+
local ____opt_45 = self._timer
|
|
849
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
820
850
|
local timer = self[114]
|
|
821
851
|
if timer == nil then
|
|
822
852
|
timer = Timer:create()
|
|
@@ -895,8 +925,8 @@ __TS__SetDescriptor(
|
|
|
895
925
|
return
|
|
896
926
|
end
|
|
897
927
|
self[117] = healingInterval
|
|
898
|
-
local
|
|
899
|
-
local elapsed =
|
|
928
|
+
local ____opt_47 = self._timer
|
|
929
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
900
930
|
local timer = self[119]
|
|
901
931
|
if timer == nil then
|
|
902
932
|
timer = Timer:create()
|
|
@@ -977,24 +1007,50 @@ __TS__SetDescriptor(
|
|
|
977
1007
|
},
|
|
978
1008
|
true
|
|
979
1009
|
)
|
|
1010
|
+
__TS__SetDescriptor(
|
|
1011
|
+
Buff.prototype,
|
|
1012
|
+
"maxHealthIncrease",
|
|
1013
|
+
{
|
|
1014
|
+
get = function(self)
|
|
1015
|
+
return self:getUnitBonus(UnitBonusType.HEALTH)
|
|
1016
|
+
end,
|
|
1017
|
+
set = function(self, maxHealthIncrease)
|
|
1018
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.HEALTH, maxHealthIncrease)
|
|
1019
|
+
end
|
|
1020
|
+
},
|
|
1021
|
+
true
|
|
1022
|
+
)
|
|
1023
|
+
__TS__SetDescriptor(
|
|
1024
|
+
Buff.prototype,
|
|
1025
|
+
"maxManaIncrease",
|
|
1026
|
+
{
|
|
1027
|
+
get = function(self)
|
|
1028
|
+
return self:getUnitBonus(UnitBonusType.MANA)
|
|
1029
|
+
end,
|
|
1030
|
+
set = function(self, maxManaIncrease)
|
|
1031
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA, maxManaIncrease)
|
|
1032
|
+
end
|
|
1033
|
+
},
|
|
1034
|
+
true
|
|
1035
|
+
)
|
|
980
1036
|
__TS__SetDescriptor(
|
|
981
1037
|
Buff.prototype,
|
|
982
1038
|
"turnsIntoGhost",
|
|
983
1039
|
{
|
|
984
1040
|
get = function(self)
|
|
985
|
-
local
|
|
986
|
-
if
|
|
987
|
-
|
|
1041
|
+
local ____self__139_49 = self[139]
|
|
1042
|
+
if ____self__139_49 == nil then
|
|
1043
|
+
____self__139_49 = false
|
|
988
1044
|
end
|
|
989
|
-
return
|
|
1045
|
+
return ____self__139_49
|
|
990
1046
|
end,
|
|
991
1047
|
set = function(self, turnsIntoGhost)
|
|
992
|
-
if not turnsIntoGhost and self[
|
|
1048
|
+
if not turnsIntoGhost and self[139] then
|
|
993
1049
|
self.object:decrementGhostCounter()
|
|
994
|
-
self[
|
|
995
|
-
elseif turnsIntoGhost and not self[
|
|
1050
|
+
self[139] = nil
|
|
1051
|
+
elseif turnsIntoGhost and not self[139] then
|
|
996
1052
|
self.object:incrementGhostCounter()
|
|
997
|
-
self[
|
|
1053
|
+
self[139] = true
|
|
998
1054
|
end
|
|
999
1055
|
end
|
|
1000
1056
|
},
|
|
@@ -1005,25 +1061,25 @@ __TS__SetDescriptor(
|
|
|
1005
1061
|
"stuns",
|
|
1006
1062
|
{
|
|
1007
1063
|
get = function(self)
|
|
1008
|
-
local
|
|
1009
|
-
if
|
|
1010
|
-
|
|
1064
|
+
local ____self__140_50 = self[140]
|
|
1065
|
+
if ____self__140_50 == nil then
|
|
1066
|
+
____self__140_50 = false
|
|
1011
1067
|
end
|
|
1012
|
-
return
|
|
1068
|
+
return ____self__140_50
|
|
1013
1069
|
end,
|
|
1014
1070
|
set = function(self, stuns)
|
|
1015
|
-
if not stuns and self[
|
|
1016
|
-
if self[
|
|
1071
|
+
if not stuns and self[140] then
|
|
1072
|
+
if self[141] then
|
|
1017
1073
|
self.object:decrementForceStunCounter()
|
|
1018
1074
|
end
|
|
1019
1075
|
self.object:decrementStunCounter()
|
|
1020
|
-
self[
|
|
1021
|
-
elseif stuns and not self[
|
|
1022
|
-
if self[
|
|
1076
|
+
self[140] = nil
|
|
1077
|
+
elseif stuns and not self[140] then
|
|
1078
|
+
if self[141] then
|
|
1023
1079
|
self.object:incrementForceStunCounter()
|
|
1024
1080
|
end
|
|
1025
1081
|
self.object:incrementStunCounter()
|
|
1026
|
-
self[
|
|
1082
|
+
self[140] = true
|
|
1027
1083
|
end
|
|
1028
1084
|
end
|
|
1029
1085
|
},
|
|
@@ -1034,23 +1090,23 @@ __TS__SetDescriptor(
|
|
|
1034
1090
|
"ignoresStunImmunity",
|
|
1035
1091
|
{
|
|
1036
1092
|
get = function(self)
|
|
1037
|
-
local
|
|
1038
|
-
if
|
|
1039
|
-
|
|
1093
|
+
local ____self__141_51 = self[141]
|
|
1094
|
+
if ____self__141_51 == nil then
|
|
1095
|
+
____self__141_51 = false
|
|
1040
1096
|
end
|
|
1041
|
-
return
|
|
1097
|
+
return ____self__141_51
|
|
1042
1098
|
end,
|
|
1043
1099
|
set = function(self, ignoresStunImmunity)
|
|
1044
|
-
if not ignoresStunImmunity and self[
|
|
1045
|
-
if self[
|
|
1100
|
+
if not ignoresStunImmunity and self[141] then
|
|
1101
|
+
if self[140] then
|
|
1046
1102
|
self.object:decrementForceStunCounter()
|
|
1047
1103
|
end
|
|
1048
|
-
self[
|
|
1049
|
-
elseif ignoresStunImmunity and not self[
|
|
1050
|
-
if self[
|
|
1104
|
+
self[141] = nil
|
|
1105
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1106
|
+
if self[140] then
|
|
1051
1107
|
self.object:incrementForceStunCounter()
|
|
1052
1108
|
end
|
|
1053
|
-
self[
|
|
1109
|
+
self[141] = true
|
|
1054
1110
|
end
|
|
1055
1111
|
end
|
|
1056
1112
|
},
|
|
@@ -1061,19 +1117,19 @@ __TS__SetDescriptor(
|
|
|
1061
1117
|
"disablesAutoAttack",
|
|
1062
1118
|
{
|
|
1063
1119
|
get = function(self)
|
|
1064
|
-
local
|
|
1065
|
-
if
|
|
1066
|
-
|
|
1120
|
+
local ____self__142_52 = self[142]
|
|
1121
|
+
if ____self__142_52 == nil then
|
|
1122
|
+
____self__142_52 = false
|
|
1067
1123
|
end
|
|
1068
|
-
return
|
|
1124
|
+
return ____self__142_52
|
|
1069
1125
|
end,
|
|
1070
1126
|
set = function(self, disablesAutoAttack)
|
|
1071
|
-
if not disablesAutoAttack and self[
|
|
1127
|
+
if not disablesAutoAttack and self[142] then
|
|
1072
1128
|
self.object:decrementDisableAutoAttackCounter()
|
|
1073
|
-
self[
|
|
1074
|
-
elseif disablesAutoAttack and not self[
|
|
1129
|
+
self[142] = nil
|
|
1130
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1075
1131
|
self.object:incrementDisableAutoAttackCounter()
|
|
1076
|
-
self[
|
|
1132
|
+
self[142] = true
|
|
1077
1133
|
end
|
|
1078
1134
|
end
|
|
1079
1135
|
},
|
|
@@ -1084,19 +1140,19 @@ __TS__SetDescriptor(
|
|
|
1084
1140
|
"providesInvulnerability",
|
|
1085
1141
|
{
|
|
1086
1142
|
get = function(self)
|
|
1087
|
-
local
|
|
1088
|
-
if
|
|
1089
|
-
|
|
1143
|
+
local ____self__143_53 = self[143]
|
|
1144
|
+
if ____self__143_53 == nil then
|
|
1145
|
+
____self__143_53 = false
|
|
1090
1146
|
end
|
|
1091
|
-
return
|
|
1147
|
+
return ____self__143_53
|
|
1092
1148
|
end,
|
|
1093
1149
|
set = function(self, providesInvulnerability)
|
|
1094
|
-
if not providesInvulnerability and self[
|
|
1150
|
+
if not providesInvulnerability and self[143] then
|
|
1095
1151
|
self.object:decrementInvulnerabilityCounter()
|
|
1096
|
-
self[
|
|
1097
|
-
elseif providesInvulnerability and not self[
|
|
1152
|
+
self[143] = nil
|
|
1153
|
+
elseif providesInvulnerability and not self[143] then
|
|
1098
1154
|
self.object:incrementInvulnerabilityCounter()
|
|
1099
|
-
self[
|
|
1155
|
+
self[143] = true
|
|
1100
1156
|
end
|
|
1101
1157
|
end
|
|
1102
1158
|
},
|
|
@@ -1107,17 +1163,17 @@ __TS__SetDescriptor(
|
|
|
1107
1163
|
"killsOnExpiration",
|
|
1108
1164
|
{
|
|
1109
1165
|
get = function(self)
|
|
1110
|
-
local
|
|
1111
|
-
if
|
|
1112
|
-
|
|
1166
|
+
local ____self__144_54 = self[144]
|
|
1167
|
+
if ____self__144_54 == nil then
|
|
1168
|
+
____self__144_54 = false
|
|
1113
1169
|
end
|
|
1114
|
-
return
|
|
1170
|
+
return ____self__144_54
|
|
1115
1171
|
end,
|
|
1116
1172
|
set = function(self, killsOnExpiration)
|
|
1117
|
-
if not killsOnExpiration and self[
|
|
1118
|
-
self[
|
|
1119
|
-
elseif killsOnExpiration and not self[
|
|
1120
|
-
self[
|
|
1173
|
+
if not killsOnExpiration and self[144] then
|
|
1174
|
+
self[144] = nil
|
|
1175
|
+
elseif killsOnExpiration and not self[144] then
|
|
1176
|
+
self[144] = true
|
|
1121
1177
|
end
|
|
1122
1178
|
end
|
|
1123
1179
|
},
|
|
@@ -1128,17 +1184,17 @@ __TS__SetDescriptor(
|
|
|
1128
1184
|
"explodesOnExpiration",
|
|
1129
1185
|
{
|
|
1130
1186
|
get = function(self)
|
|
1131
|
-
local
|
|
1132
|
-
if
|
|
1133
|
-
|
|
1187
|
+
local ____self__145_55 = self[145]
|
|
1188
|
+
if ____self__145_55 == nil then
|
|
1189
|
+
____self__145_55 = false
|
|
1134
1190
|
end
|
|
1135
|
-
return
|
|
1191
|
+
return ____self__145_55
|
|
1136
1192
|
end,
|
|
1137
1193
|
set = function(self, killsOnExpiration)
|
|
1138
|
-
if not killsOnExpiration and self[
|
|
1139
|
-
self[
|
|
1140
|
-
elseif killsOnExpiration and not self[
|
|
1141
|
-
self[
|
|
1194
|
+
if not killsOnExpiration and self[145] then
|
|
1195
|
+
self[145] = nil
|
|
1196
|
+
elseif killsOnExpiration and not self[145] then
|
|
1197
|
+
self[145] = true
|
|
1142
1198
|
end
|
|
1143
1199
|
end
|
|
1144
1200
|
},
|
|
@@ -1247,12 +1303,39 @@ __TS__SetDescriptor(
|
|
|
1247
1303
|
},
|
|
1248
1304
|
true
|
|
1249
1305
|
)
|
|
1306
|
+
__TS__SetDescriptor(
|
|
1307
|
+
Buff.prototype,
|
|
1308
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1309
|
+
{
|
|
1310
|
+
get = function(self)
|
|
1311
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1312
|
+
end,
|
|
1313
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1314
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1315
|
+
end
|
|
1316
|
+
},
|
|
1317
|
+
true
|
|
1318
|
+
)
|
|
1250
1319
|
__TS__SetDescriptor(
|
|
1251
1320
|
Buff.prototype,
|
|
1252
1321
|
"duration",
|
|
1253
|
-
{
|
|
1254
|
-
|
|
1255
|
-
|
|
1322
|
+
{
|
|
1323
|
+
get = function(self)
|
|
1324
|
+
return self[103]
|
|
1325
|
+
end,
|
|
1326
|
+
set = function(self, duration)
|
|
1327
|
+
if duration <= 0 then
|
|
1328
|
+
local timer = self._timer
|
|
1329
|
+
if timer ~= nil then
|
|
1330
|
+
timer:destroy()
|
|
1331
|
+
self._timer = nil
|
|
1332
|
+
end
|
|
1333
|
+
self[103] = 0
|
|
1334
|
+
else
|
|
1335
|
+
self.remainingDuration = self.remainingDuration + (duration - self[103])
|
|
1336
|
+
end
|
|
1337
|
+
end
|
|
1338
|
+
},
|
|
1256
1339
|
true
|
|
1257
1340
|
)
|
|
1258
1341
|
__TS__SetDescriptor(
|
|
@@ -1260,13 +1343,13 @@ __TS__SetDescriptor(
|
|
|
1260
1343
|
"remainingDuration",
|
|
1261
1344
|
{
|
|
1262
1345
|
get = function(self)
|
|
1263
|
-
local
|
|
1264
|
-
return
|
|
1346
|
+
local ____opt_56 = self._timer
|
|
1347
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1265
1348
|
end,
|
|
1266
1349
|
set = function(self, remainingDuration)
|
|
1267
|
-
local
|
|
1268
|
-
local
|
|
1269
|
-
local remainingDurationDelta =
|
|
1350
|
+
local ____remainingDuration_60 = remainingDuration
|
|
1351
|
+
local ____opt_58 = self._timer
|
|
1352
|
+
local remainingDurationDelta = ____remainingDuration_60 - (____opt_58 and ____opt_58.remaining or 0)
|
|
1270
1353
|
if remainingDurationDelta ~= 0 then
|
|
1271
1354
|
self[103] = self[103] + remainingDurationDelta
|
|
1272
1355
|
if remainingDuration <= 0 then
|
|
@@ -1281,7 +1364,7 @@ __TS__SetDescriptor(
|
|
|
1281
1364
|
remainingDuration,
|
|
1282
1365
|
self._spellStealPriority,
|
|
1283
1366
|
self._learnLevelMinimum,
|
|
1284
|
-
self[
|
|
1367
|
+
self[146]
|
|
1285
1368
|
) then
|
|
1286
1369
|
local timer = self._timer
|
|
1287
1370
|
if timer == nil then
|
|
@@ -1296,15 +1379,80 @@ __TS__SetDescriptor(
|
|
|
1296
1379
|
},
|
|
1297
1380
|
true
|
|
1298
1381
|
)
|
|
1382
|
+
__TS__SetDescriptor(
|
|
1383
|
+
Buff.prototype,
|
|
1384
|
+
"absorbedDamageFactor",
|
|
1385
|
+
{
|
|
1386
|
+
get = function(self)
|
|
1387
|
+
return self[135] or 1
|
|
1388
|
+
end,
|
|
1389
|
+
set = function(self, absorbedDamageFactor)
|
|
1390
|
+
if absorbedDamageFactor == 1 then
|
|
1391
|
+
self[135] = nil
|
|
1392
|
+
else
|
|
1393
|
+
self[135] = absorbedDamageFactor
|
|
1394
|
+
end
|
|
1395
|
+
end
|
|
1396
|
+
},
|
|
1397
|
+
true
|
|
1398
|
+
)
|
|
1399
|
+
__TS__SetDescriptor(
|
|
1400
|
+
Buff.prototype,
|
|
1401
|
+
"maximumDamageAbsorbed",
|
|
1402
|
+
{
|
|
1403
|
+
get = function(self)
|
|
1404
|
+
return self[136] or 0
|
|
1405
|
+
end,
|
|
1406
|
+
set = function(self, maximumDamageAbsorbed)
|
|
1407
|
+
if maximumDamageAbsorbed == 0 then
|
|
1408
|
+
self[136] = nil
|
|
1409
|
+
else
|
|
1410
|
+
self[136] = maximumDamageAbsorbed
|
|
1411
|
+
end
|
|
1412
|
+
end
|
|
1413
|
+
},
|
|
1414
|
+
true
|
|
1415
|
+
)
|
|
1416
|
+
__TS__SetDescriptor(
|
|
1417
|
+
Buff.prototype,
|
|
1418
|
+
"damageAbsorbed",
|
|
1419
|
+
{get = function(self)
|
|
1420
|
+
return self[137] or 0
|
|
1421
|
+
end},
|
|
1422
|
+
true
|
|
1423
|
+
)
|
|
1424
|
+
__TS__SetDescriptor(
|
|
1425
|
+
Buff.prototype,
|
|
1426
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
1427
|
+
{
|
|
1428
|
+
get = function(self)
|
|
1429
|
+
local ____self__138_61 = self[138]
|
|
1430
|
+
if ____self__138_61 == nil then
|
|
1431
|
+
____self__138_61 = true
|
|
1432
|
+
end
|
|
1433
|
+
return ____self__138_61
|
|
1434
|
+
end,
|
|
1435
|
+
set = function(self, destroysOnMaximumDamageAbsorbed)
|
|
1436
|
+
local ____destroysOnMaximumDamageAbsorbed_62
|
|
1437
|
+
if destroysOnMaximumDamageAbsorbed then
|
|
1438
|
+
____destroysOnMaximumDamageAbsorbed_62 = nil
|
|
1439
|
+
else
|
|
1440
|
+
____destroysOnMaximumDamageAbsorbed_62 = false
|
|
1441
|
+
end
|
|
1442
|
+
self[138] = ____destroysOnMaximumDamageAbsorbed_62
|
|
1443
|
+
end
|
|
1444
|
+
},
|
|
1445
|
+
true
|
|
1446
|
+
)
|
|
1299
1447
|
__TS__SetDescriptor(
|
|
1300
1448
|
Buff.prototype,
|
|
1301
1449
|
"abilityCooldownFactor",
|
|
1302
1450
|
{
|
|
1303
1451
|
get = function(self)
|
|
1304
|
-
return self[
|
|
1452
|
+
return self[147] or 1
|
|
1305
1453
|
end,
|
|
1306
1454
|
set = function(self, abilityCooldownFactor)
|
|
1307
|
-
local previousAbilityCooldownModifier = self[
|
|
1455
|
+
local previousAbilityCooldownModifier = self[148]
|
|
1308
1456
|
if previousAbilityCooldownModifier then
|
|
1309
1457
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
1310
1458
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
@@ -1316,8 +1464,8 @@ __TS__SetDescriptor(
|
|
|
1316
1464
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
1317
1465
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1318
1466
|
end
|
|
1319
|
-
self[
|
|
1320
|
-
self[
|
|
1467
|
+
self[148] = modifier
|
|
1468
|
+
self[147] = abilityCooldownFactor
|
|
1321
1469
|
end
|
|
1322
1470
|
},
|
|
1323
1471
|
true
|