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.
- package/core/types/frame.lua +47 -1
- package/core/types/handle.lua +6 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +1 -1
- package/core/types/player.lua +12 -11
- 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/damage.d.ts +3 -0
- package/engine/behaviour/ability/damage.lua +8 -2
- package/engine/behaviour/ability/emulate-impact.lua +5 -4
- package/engine/behaviour/ability.d.ts +9 -5
- package/engine/behaviour/ability.lua +29 -0
- 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 +56 -19
- package/engine/buff.lua +283 -142
- package/engine/internal/ability.lua +15 -15
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item.d.ts +4 -5
- package/engine/internal/item.lua +37 -40
- 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 +6 -1
- package/engine/local-client.lua +60 -5
- 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 +12 -0
- package/engine/object-data/entry/destructible-type.lua +78 -0
- package/engine/object-field/ability.lua +2 -2
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- 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/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- 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/math.d.ts +2 -0
- package/math.lua +14 -0
- 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 +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +3 -1
- package/utility/linked-set.lua +27 -0
- package/utility/records.lua +20 -1
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- /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
|
|
@@ -55,6 +56,8 @@ local ____ability = require("engine.standard.fields.ability")
|
|
|
55
56
|
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
56
57
|
local ____ability = require("engine.behaviour.ability")
|
|
57
58
|
local AbilityBehavior = ____ability.AbilityBehavior
|
|
59
|
+
local ____records = require("utility.records")
|
|
60
|
+
local sortedKeysUnnested = ____records.sortedKeysUnnested
|
|
58
61
|
local getUnitAbility = BlzGetUnitAbility
|
|
59
62
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
60
63
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -100,9 +103,11 @@ local buffParametersKeys = {
|
|
|
100
103
|
damageIncrease = true,
|
|
101
104
|
damageIncreaseFactor = true,
|
|
102
105
|
armorIncrease = true,
|
|
103
|
-
|
|
106
|
+
maxHealthIncrease = true,
|
|
107
|
+
maxManaIncrease = true,
|
|
104
108
|
attackSpeedIncreaseFactor = true,
|
|
105
109
|
movementSpeedIncreaseFactor = true,
|
|
110
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
106
111
|
evasionProbability = true,
|
|
107
112
|
missProbability = true,
|
|
108
113
|
damageFactor = true,
|
|
@@ -122,6 +127,9 @@ local buffParametersKeys = {
|
|
|
122
127
|
maximumAutoAttackCount = true,
|
|
123
128
|
maximumDamageDealtEventCount = true,
|
|
124
129
|
maximumDamageReceivedEventCount = true,
|
|
130
|
+
absorbedDamageFactor = true,
|
|
131
|
+
maximumDamageAbsorbed = true,
|
|
132
|
+
destroysOnMaximumDamageAbsorbed = true,
|
|
125
133
|
uniqueGroup = true,
|
|
126
134
|
damageOnExpiration = true,
|
|
127
135
|
healingOnExpiration = true,
|
|
@@ -178,6 +186,7 @@ local function resolveAndSetNumberValue(buff, property, ability, level, value, d
|
|
|
178
186
|
end
|
|
179
187
|
end
|
|
180
188
|
local buffBooleanParameters = {
|
|
189
|
+
"destroysOnMaximumDamageAbsorbed",
|
|
181
190
|
"turnsIntoGhost",
|
|
182
191
|
"stuns",
|
|
183
192
|
"ignoresStunImmunity",
|
|
@@ -190,8 +199,11 @@ local buffNumberParameters = {
|
|
|
190
199
|
"durationIncreaseOnAutoAttack",
|
|
191
200
|
"attackSpeedIncreaseFactor",
|
|
192
201
|
"movementSpeedIncreaseFactor",
|
|
202
|
+
"manaRegenerationRateIncreaseFactor",
|
|
193
203
|
"evasionProbability",
|
|
194
204
|
"armorIncrease",
|
|
205
|
+
"maxHealthIncrease",
|
|
206
|
+
"maxManaIncrease",
|
|
195
207
|
"damageFactor",
|
|
196
208
|
"receivedDamageFactor",
|
|
197
209
|
"maximumAutoAttackCount",
|
|
@@ -205,6 +217,8 @@ local buffNumberParameters = {
|
|
|
205
217
|
"healingOverDuration",
|
|
206
218
|
"damageOnExpiration",
|
|
207
219
|
"healingOnExpiration",
|
|
220
|
+
"absorbedDamageFactor",
|
|
221
|
+
"maximumDamageAbsorbed",
|
|
208
222
|
"abilityCooldownFactor"
|
|
209
223
|
}
|
|
210
224
|
local unsuccessfulApplicationMarker = {}
|
|
@@ -383,14 +397,15 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
383
397
|
local missProbability = parameters and parameters.missProbability or defaultParameters.missProbability
|
|
384
398
|
if missProbability ~= nil then
|
|
385
399
|
missProbability = resolveNumberValue(ability, level, missProbability)
|
|
386
|
-
self[
|
|
400
|
+
self[146] = missProbability
|
|
387
401
|
end
|
|
388
402
|
local buffByTypeId = buffByTypeIdByUnit[_unit]
|
|
389
403
|
if buffByTypeId == nil then
|
|
390
404
|
buffByTypeId = {}
|
|
391
405
|
buffByTypeIdByUnit[_unit] = buffByTypeId
|
|
392
406
|
end
|
|
393
|
-
|
|
407
|
+
self.previousBuff = buffByTypeId[typeId]
|
|
408
|
+
local ____opt_15 = self.previousBuff
|
|
394
409
|
if ____opt_15 ~= nil then
|
|
395
410
|
____opt_15:destroy()
|
|
396
411
|
end
|
|
@@ -466,24 +481,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
466
481
|
abilityTypeIds = {}
|
|
467
482
|
self._abilityTypeIds = abilityTypeIds
|
|
468
483
|
end
|
|
469
|
-
for
|
|
484
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
485
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
470
486
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
471
487
|
if addedAbility ~= nil then
|
|
472
488
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
473
489
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
483
|
-
)
|
|
484
|
-
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
|
+
)
|
|
485
498
|
end
|
|
486
|
-
abilityTypeIds[
|
|
499
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
487
500
|
end
|
|
488
501
|
end
|
|
489
502
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -495,18 +508,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
495
508
|
self._behaviors = behaviors
|
|
496
509
|
end
|
|
497
510
|
end
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
if
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
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
|
|
505
520
|
end
|
|
506
521
|
end
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
522
|
+
if (next(additionalParameters)) ~= nil then
|
|
523
|
+
self.parameters = additionalParameters
|
|
524
|
+
end
|
|
510
525
|
end
|
|
511
526
|
end
|
|
512
527
|
if duration ~= nil and duration > 0 then
|
|
@@ -520,7 +535,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
520
535
|
end
|
|
521
536
|
function Buff.prototype.onAbilityGained(self, ability)
|
|
522
537
|
if __TS__InstanceOf(ability, UnitAbility) then
|
|
523
|
-
local abilityCooldownModifier = self[
|
|
538
|
+
local abilityCooldownModifier = self[148]
|
|
524
539
|
if abilityCooldownModifier then
|
|
525
540
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
526
541
|
end
|
|
@@ -528,24 +543,38 @@ function Buff.prototype.onAbilityGained(self, ability)
|
|
|
528
543
|
end
|
|
529
544
|
function Buff.prototype.onAbilityLost(self, ability)
|
|
530
545
|
if __TS__InstanceOf(ability, UnitAbility) then
|
|
531
|
-
local abilityCooldownModifier = self[
|
|
546
|
+
local abilityCooldownModifier = self[148]
|
|
532
547
|
if abilityCooldownModifier then
|
|
533
548
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
534
549
|
end
|
|
535
550
|
end
|
|
536
551
|
end
|
|
537
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)
|
|
538
571
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
539
|
-
Effect:flash(
|
|
572
|
+
Effect:flash(modelPath, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
540
573
|
else
|
|
541
574
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
542
575
|
local ____Effect_40 = Effect
|
|
543
576
|
local ____Effect_flash_41 = Effect.flash
|
|
544
|
-
local ____array_39 = __TS__SparseArrayNew(
|
|
545
|
-
self[105],
|
|
546
|
-
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
547
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
548
|
-
)
|
|
577
|
+
local ____array_39 = __TS__SparseArrayNew(modelPath, isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit, attachmentPoint)
|
|
549
578
|
local ____isWidgetProvided_38
|
|
550
579
|
if isWidgetProvided then
|
|
551
580
|
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
@@ -559,26 +588,8 @@ function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrPa
|
|
|
559
588
|
)
|
|
560
589
|
end
|
|
561
590
|
end
|
|
562
|
-
function Buff.prototype.
|
|
563
|
-
|
|
564
|
-
local ____Effect_44 = Effect
|
|
565
|
-
local ____Effect_flash_45 = Effect.flash
|
|
566
|
-
local ____array_43 = __TS__SparseArrayNew(
|
|
567
|
-
self[106],
|
|
568
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
569
|
-
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
570
|
-
)
|
|
571
|
-
local ____isWidgetProvided_42
|
|
572
|
-
if isWidgetProvided then
|
|
573
|
-
____isWidgetProvided_42 = duration
|
|
574
|
-
else
|
|
575
|
-
____isWidgetProvided_42 = widgetOrDuration
|
|
576
|
-
end
|
|
577
|
-
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
578
|
-
____Effect_flash_45(
|
|
579
|
-
____Effect_44,
|
|
580
|
-
__TS__SparseArraySpread(____array_43)
|
|
581
|
-
)
|
|
591
|
+
function Buff.prototype.expire(self)
|
|
592
|
+
expireBuff(self)
|
|
582
593
|
end
|
|
583
594
|
function Buff.prototype.onCreate(self)
|
|
584
595
|
end
|
|
@@ -608,29 +619,29 @@ function Buff.prototype.onDestroy(self)
|
|
|
608
619
|
behavior:destroy()
|
|
609
620
|
end
|
|
610
621
|
end
|
|
611
|
-
local previousAbilityCooldownModifier = self[
|
|
622
|
+
local previousAbilityCooldownModifier = self[148]
|
|
612
623
|
if previousAbilityCooldownModifier then
|
|
613
624
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
614
625
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
615
626
|
end
|
|
616
627
|
end
|
|
617
|
-
if self[
|
|
628
|
+
if self[143] then
|
|
618
629
|
unit:decrementInvulnerabilityCounter()
|
|
619
630
|
end
|
|
620
|
-
if self[
|
|
631
|
+
if self[142] then
|
|
621
632
|
unit:decrementDisableAutoAttackCounter()
|
|
622
633
|
end
|
|
623
|
-
if self[
|
|
624
|
-
if self[
|
|
634
|
+
if self[140] then
|
|
635
|
+
if self[141] then
|
|
625
636
|
unit:decrementForceStunCounter()
|
|
626
637
|
end
|
|
627
638
|
unit:decrementStunCounter()
|
|
628
639
|
end
|
|
629
|
-
if self[
|
|
640
|
+
if self[139] then
|
|
630
641
|
unit:decrementGhostCounter()
|
|
631
642
|
end
|
|
632
643
|
if self._abilityTypeIds ~= nil then
|
|
633
|
-
for abilityTypeId in
|
|
644
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
634
645
|
unit:removeAbility(abilityTypeId)
|
|
635
646
|
end
|
|
636
647
|
end
|
|
@@ -663,8 +674,8 @@ function Buff.apply(self, ...)
|
|
|
663
674
|
end
|
|
664
675
|
end
|
|
665
676
|
function Buff.getByTypeId(self, unit, typeId)
|
|
666
|
-
local
|
|
667
|
-
local buff =
|
|
677
|
+
local ____opt_42 = buffByTypeIdByUnit[unit]
|
|
678
|
+
local buff = ____opt_42 and ____opt_42[typeId]
|
|
668
679
|
if __TS__InstanceOf(buff, self) then
|
|
669
680
|
return buff
|
|
670
681
|
end
|
|
@@ -678,9 +689,9 @@ function Buff.prototype.onExpiration(self)
|
|
|
678
689
|
if self[121] ~= nil then
|
|
679
690
|
(self[102] or unit):healTarget(unit, self[120] or 0)
|
|
680
691
|
end
|
|
681
|
-
if self[
|
|
692
|
+
if self[145] then
|
|
682
693
|
unit:explode()
|
|
683
|
-
elseif self[
|
|
694
|
+
elseif self[144] then
|
|
684
695
|
unit:kill()
|
|
685
696
|
end
|
|
686
697
|
end
|
|
@@ -735,6 +746,18 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
735
746
|
end
|
|
736
747
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
737
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
|
|
738
761
|
local damageReceivedEventCount = (self[133] or 0) + 1
|
|
739
762
|
self[133] = damageReceivedEventCount
|
|
740
763
|
if damageReceivedEventCount == self[134] then
|
|
@@ -822,8 +845,8 @@ __TS__SetDescriptor(
|
|
|
822
845
|
return
|
|
823
846
|
end
|
|
824
847
|
self[112] = damageInterval
|
|
825
|
-
local
|
|
826
|
-
local elapsed =
|
|
848
|
+
local ____opt_45 = self._timer
|
|
849
|
+
local elapsed = ____opt_45 and ____opt_45.elapsed or 0
|
|
827
850
|
local timer = self[114]
|
|
828
851
|
if timer == nil then
|
|
829
852
|
timer = Timer:create()
|
|
@@ -902,8 +925,8 @@ __TS__SetDescriptor(
|
|
|
902
925
|
return
|
|
903
926
|
end
|
|
904
927
|
self[117] = healingInterval
|
|
905
|
-
local
|
|
906
|
-
local elapsed =
|
|
928
|
+
local ____opt_47 = self._timer
|
|
929
|
+
local elapsed = ____opt_47 and ____opt_47.elapsed or 0
|
|
907
930
|
local timer = self[119]
|
|
908
931
|
if timer == nil then
|
|
909
932
|
timer = Timer:create()
|
|
@@ -984,24 +1007,50 @@ __TS__SetDescriptor(
|
|
|
984
1007
|
},
|
|
985
1008
|
true
|
|
986
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
|
+
)
|
|
987
1036
|
__TS__SetDescriptor(
|
|
988
1037
|
Buff.prototype,
|
|
989
1038
|
"turnsIntoGhost",
|
|
990
1039
|
{
|
|
991
1040
|
get = function(self)
|
|
992
|
-
local
|
|
993
|
-
if
|
|
994
|
-
|
|
1041
|
+
local ____self__139_49 = self[139]
|
|
1042
|
+
if ____self__139_49 == nil then
|
|
1043
|
+
____self__139_49 = false
|
|
995
1044
|
end
|
|
996
|
-
return
|
|
1045
|
+
return ____self__139_49
|
|
997
1046
|
end,
|
|
998
1047
|
set = function(self, turnsIntoGhost)
|
|
999
|
-
if not turnsIntoGhost and self[
|
|
1048
|
+
if not turnsIntoGhost and self[139] then
|
|
1000
1049
|
self.object:decrementGhostCounter()
|
|
1001
|
-
self[
|
|
1002
|
-
elseif turnsIntoGhost and not self[
|
|
1050
|
+
self[139] = nil
|
|
1051
|
+
elseif turnsIntoGhost and not self[139] then
|
|
1003
1052
|
self.object:incrementGhostCounter()
|
|
1004
|
-
self[
|
|
1053
|
+
self[139] = true
|
|
1005
1054
|
end
|
|
1006
1055
|
end
|
|
1007
1056
|
},
|
|
@@ -1012,25 +1061,25 @@ __TS__SetDescriptor(
|
|
|
1012
1061
|
"stuns",
|
|
1013
1062
|
{
|
|
1014
1063
|
get = function(self)
|
|
1015
|
-
local
|
|
1016
|
-
if
|
|
1017
|
-
|
|
1064
|
+
local ____self__140_50 = self[140]
|
|
1065
|
+
if ____self__140_50 == nil then
|
|
1066
|
+
____self__140_50 = false
|
|
1018
1067
|
end
|
|
1019
|
-
return
|
|
1068
|
+
return ____self__140_50
|
|
1020
1069
|
end,
|
|
1021
1070
|
set = function(self, stuns)
|
|
1022
|
-
if not stuns and self[
|
|
1023
|
-
if self[
|
|
1071
|
+
if not stuns and self[140] then
|
|
1072
|
+
if self[141] then
|
|
1024
1073
|
self.object:decrementForceStunCounter()
|
|
1025
1074
|
end
|
|
1026
1075
|
self.object:decrementStunCounter()
|
|
1027
|
-
self[
|
|
1028
|
-
elseif stuns and not self[
|
|
1029
|
-
if self[
|
|
1076
|
+
self[140] = nil
|
|
1077
|
+
elseif stuns and not self[140] then
|
|
1078
|
+
if self[141] then
|
|
1030
1079
|
self.object:incrementForceStunCounter()
|
|
1031
1080
|
end
|
|
1032
1081
|
self.object:incrementStunCounter()
|
|
1033
|
-
self[
|
|
1082
|
+
self[140] = true
|
|
1034
1083
|
end
|
|
1035
1084
|
end
|
|
1036
1085
|
},
|
|
@@ -1041,23 +1090,23 @@ __TS__SetDescriptor(
|
|
|
1041
1090
|
"ignoresStunImmunity",
|
|
1042
1091
|
{
|
|
1043
1092
|
get = function(self)
|
|
1044
|
-
local
|
|
1045
|
-
if
|
|
1046
|
-
|
|
1093
|
+
local ____self__141_51 = self[141]
|
|
1094
|
+
if ____self__141_51 == nil then
|
|
1095
|
+
____self__141_51 = false
|
|
1047
1096
|
end
|
|
1048
|
-
return
|
|
1097
|
+
return ____self__141_51
|
|
1049
1098
|
end,
|
|
1050
1099
|
set = function(self, ignoresStunImmunity)
|
|
1051
|
-
if not ignoresStunImmunity and self[
|
|
1052
|
-
if self[
|
|
1100
|
+
if not ignoresStunImmunity and self[141] then
|
|
1101
|
+
if self[140] then
|
|
1053
1102
|
self.object:decrementForceStunCounter()
|
|
1054
1103
|
end
|
|
1055
|
-
self[
|
|
1056
|
-
elseif ignoresStunImmunity and not self[
|
|
1057
|
-
if self[
|
|
1104
|
+
self[141] = nil
|
|
1105
|
+
elseif ignoresStunImmunity and not self[141] then
|
|
1106
|
+
if self[140] then
|
|
1058
1107
|
self.object:incrementForceStunCounter()
|
|
1059
1108
|
end
|
|
1060
|
-
self[
|
|
1109
|
+
self[141] = true
|
|
1061
1110
|
end
|
|
1062
1111
|
end
|
|
1063
1112
|
},
|
|
@@ -1068,19 +1117,19 @@ __TS__SetDescriptor(
|
|
|
1068
1117
|
"disablesAutoAttack",
|
|
1069
1118
|
{
|
|
1070
1119
|
get = function(self)
|
|
1071
|
-
local
|
|
1072
|
-
if
|
|
1073
|
-
|
|
1120
|
+
local ____self__142_52 = self[142]
|
|
1121
|
+
if ____self__142_52 == nil then
|
|
1122
|
+
____self__142_52 = false
|
|
1074
1123
|
end
|
|
1075
|
-
return
|
|
1124
|
+
return ____self__142_52
|
|
1076
1125
|
end,
|
|
1077
1126
|
set = function(self, disablesAutoAttack)
|
|
1078
|
-
if not disablesAutoAttack and self[
|
|
1127
|
+
if not disablesAutoAttack and self[142] then
|
|
1079
1128
|
self.object:decrementDisableAutoAttackCounter()
|
|
1080
|
-
self[
|
|
1081
|
-
elseif disablesAutoAttack and not self[
|
|
1129
|
+
self[142] = nil
|
|
1130
|
+
elseif disablesAutoAttack and not self[142] then
|
|
1082
1131
|
self.object:incrementDisableAutoAttackCounter()
|
|
1083
|
-
self[
|
|
1132
|
+
self[142] = true
|
|
1084
1133
|
end
|
|
1085
1134
|
end
|
|
1086
1135
|
},
|
|
@@ -1091,19 +1140,19 @@ __TS__SetDescriptor(
|
|
|
1091
1140
|
"providesInvulnerability",
|
|
1092
1141
|
{
|
|
1093
1142
|
get = function(self)
|
|
1094
|
-
local
|
|
1095
|
-
if
|
|
1096
|
-
|
|
1143
|
+
local ____self__143_53 = self[143]
|
|
1144
|
+
if ____self__143_53 == nil then
|
|
1145
|
+
____self__143_53 = false
|
|
1097
1146
|
end
|
|
1098
|
-
return
|
|
1147
|
+
return ____self__143_53
|
|
1099
1148
|
end,
|
|
1100
1149
|
set = function(self, providesInvulnerability)
|
|
1101
|
-
if not providesInvulnerability and self[
|
|
1150
|
+
if not providesInvulnerability and self[143] then
|
|
1102
1151
|
self.object:decrementInvulnerabilityCounter()
|
|
1103
|
-
self[
|
|
1104
|
-
elseif providesInvulnerability and not self[
|
|
1152
|
+
self[143] = nil
|
|
1153
|
+
elseif providesInvulnerability and not self[143] then
|
|
1105
1154
|
self.object:incrementInvulnerabilityCounter()
|
|
1106
|
-
self[
|
|
1155
|
+
self[143] = true
|
|
1107
1156
|
end
|
|
1108
1157
|
end
|
|
1109
1158
|
},
|
|
@@ -1114,17 +1163,17 @@ __TS__SetDescriptor(
|
|
|
1114
1163
|
"killsOnExpiration",
|
|
1115
1164
|
{
|
|
1116
1165
|
get = function(self)
|
|
1117
|
-
local
|
|
1118
|
-
if
|
|
1119
|
-
|
|
1166
|
+
local ____self__144_54 = self[144]
|
|
1167
|
+
if ____self__144_54 == nil then
|
|
1168
|
+
____self__144_54 = false
|
|
1120
1169
|
end
|
|
1121
|
-
return
|
|
1170
|
+
return ____self__144_54
|
|
1122
1171
|
end,
|
|
1123
1172
|
set = function(self, killsOnExpiration)
|
|
1124
|
-
if not killsOnExpiration and self[
|
|
1125
|
-
self[
|
|
1126
|
-
elseif killsOnExpiration and not self[
|
|
1127
|
-
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
|
|
1128
1177
|
end
|
|
1129
1178
|
end
|
|
1130
1179
|
},
|
|
@@ -1135,17 +1184,17 @@ __TS__SetDescriptor(
|
|
|
1135
1184
|
"explodesOnExpiration",
|
|
1136
1185
|
{
|
|
1137
1186
|
get = function(self)
|
|
1138
|
-
local
|
|
1139
|
-
if
|
|
1140
|
-
|
|
1187
|
+
local ____self__145_55 = self[145]
|
|
1188
|
+
if ____self__145_55 == nil then
|
|
1189
|
+
____self__145_55 = false
|
|
1141
1190
|
end
|
|
1142
|
-
return
|
|
1191
|
+
return ____self__145_55
|
|
1143
1192
|
end,
|
|
1144
1193
|
set = function(self, killsOnExpiration)
|
|
1145
|
-
if not killsOnExpiration and self[
|
|
1146
|
-
self[
|
|
1147
|
-
elseif killsOnExpiration and not self[
|
|
1148
|
-
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
|
|
1149
1198
|
end
|
|
1150
1199
|
end
|
|
1151
1200
|
},
|
|
@@ -1254,12 +1303,39 @@ __TS__SetDescriptor(
|
|
|
1254
1303
|
},
|
|
1255
1304
|
true
|
|
1256
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
|
+
)
|
|
1257
1319
|
__TS__SetDescriptor(
|
|
1258
1320
|
Buff.prototype,
|
|
1259
1321
|
"duration",
|
|
1260
|
-
{
|
|
1261
|
-
|
|
1262
|
-
|
|
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
|
+
},
|
|
1263
1339
|
true
|
|
1264
1340
|
)
|
|
1265
1341
|
__TS__SetDescriptor(
|
|
@@ -1267,13 +1343,13 @@ __TS__SetDescriptor(
|
|
|
1267
1343
|
"remainingDuration",
|
|
1268
1344
|
{
|
|
1269
1345
|
get = function(self)
|
|
1270
|
-
local
|
|
1271
|
-
return
|
|
1346
|
+
local ____opt_56 = self._timer
|
|
1347
|
+
return ____opt_56 and ____opt_56.remaining or 0
|
|
1272
1348
|
end,
|
|
1273
1349
|
set = function(self, remainingDuration)
|
|
1274
|
-
local
|
|
1275
|
-
local
|
|
1276
|
-
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)
|
|
1277
1353
|
if remainingDurationDelta ~= 0 then
|
|
1278
1354
|
self[103] = self[103] + remainingDurationDelta
|
|
1279
1355
|
if remainingDuration <= 0 then
|
|
@@ -1288,7 +1364,7 @@ __TS__SetDescriptor(
|
|
|
1288
1364
|
remainingDuration,
|
|
1289
1365
|
self._spellStealPriority,
|
|
1290
1366
|
self._learnLevelMinimum,
|
|
1291
|
-
self[
|
|
1367
|
+
self[146]
|
|
1292
1368
|
) then
|
|
1293
1369
|
local timer = self._timer
|
|
1294
1370
|
if timer == nil then
|
|
@@ -1303,15 +1379,80 @@ __TS__SetDescriptor(
|
|
|
1303
1379
|
},
|
|
1304
1380
|
true
|
|
1305
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
|
+
)
|
|
1306
1447
|
__TS__SetDescriptor(
|
|
1307
1448
|
Buff.prototype,
|
|
1308
1449
|
"abilityCooldownFactor",
|
|
1309
1450
|
{
|
|
1310
1451
|
get = function(self)
|
|
1311
|
-
return self[
|
|
1452
|
+
return self[147] or 1
|
|
1312
1453
|
end,
|
|
1313
1454
|
set = function(self, abilityCooldownFactor)
|
|
1314
|
-
local previousAbilityCooldownModifier = self[
|
|
1455
|
+
local previousAbilityCooldownModifier = self[148]
|
|
1315
1456
|
if previousAbilityCooldownModifier then
|
|
1316
1457
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
1317
1458
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
@@ -1323,8 +1464,8 @@ __TS__SetDescriptor(
|
|
|
1323
1464
|
for ____, ability in ipairs(self._unit.abilities) do
|
|
1324
1465
|
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1325
1466
|
end
|
|
1326
|
-
self[
|
|
1327
|
-
self[
|
|
1467
|
+
self[148] = modifier
|
|
1468
|
+
self[147] = abilityCooldownFactor
|
|
1328
1469
|
end
|
|
1329
1470
|
},
|
|
1330
1471
|
true
|