warscript 0.0.1-dev.193ed34 → 0.0.1-dev.1a26d39
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/attributes.d.ts +1 -0
- package/attributes.lua +9 -0
- package/core/types/frame.lua +22 -32
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +57 -14
- package/core/types/playerCamera.lua +48 -4
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -2
- package/core/types/timer.lua +22 -2
- package/decl/native.d.ts +2 -2
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +12 -1
- package/engine/behavior.lua +199 -65
- package/engine/behaviour/ability/apply-buff.lua +4 -4
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability.d.ts +6 -1
- package/engine/behaviour/ability.lua +31 -1
- package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
- package/engine/behaviour/unit/stun-immunity.lua +17 -7
- package/engine/behaviour/unit.d.ts +15 -5
- package/engine/behaviour/unit.lua +126 -22
- package/engine/buff.d.ts +19 -7
- package/engine/buff.lua +178 -118
- package/engine/internal/ability.d.ts +3 -1
- package/engine/internal/ability.lua +26 -9
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +13 -15
- package/engine/internal/item.lua +63 -49
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -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/ability.d.ts +14 -14
- package/engine/internal/unit/ability.lua +72 -45
- 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.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit-missile-launch.lua +51 -20
- package/engine/internal/unit.d.ts +18 -22
- package/engine/internal/unit.lua +179 -200
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -0
- 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/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.lua +4 -1
- 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.d.ts +3 -3
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +20 -5
- package/engine/object-field/unit.lua +61 -0
- package/engine/object-field.d.ts +11 -3
- package/engine/object-field.lua +270 -125
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -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 -3
- package/engine/standard/fields/unit.lua +15 -2
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.lua +4 -2
- package/engine/unit.d.ts +5 -0
- package/engine/unit.lua +5 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +10 -8
- package/package.json +2 -2
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +8 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/linked-map.d.ts +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +3 -1
- package/utility/linked-set.lua +40 -1
- package/utility/lua-maps.d.ts +11 -2
- package/utility/lua-maps.lua +33 -2
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
package/engine/buff.lua
CHANGED
|
@@ -16,6 +16,7 @@ local internalApplyBuff = ____applicable.internalApplyBuff
|
|
|
16
16
|
local removeBuff = ____applicable.removeBuff
|
|
17
17
|
local ____ability = require("engine.internal.ability")
|
|
18
18
|
local Ability = ____ability.Ability
|
|
19
|
+
local UnitAbility = ____ability.UnitAbility
|
|
19
20
|
local ____ability = require("engine.object-field.ability")
|
|
20
21
|
local AbilityBooleanField = ____ability.AbilityBooleanField
|
|
21
22
|
local AbilityNumberField = ____ability.AbilityNumberField
|
|
@@ -28,9 +29,6 @@ local ____math = require("math")
|
|
|
28
29
|
local max = ____math.max
|
|
29
30
|
local min = ____math.min
|
|
30
31
|
local ____bonus = require("engine.internal.unit.bonus")
|
|
31
|
-
local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
|
|
32
|
-
local getUnitBonus = ____bonus.getUnitBonus
|
|
33
|
-
local removeUnitBonus = ____bonus.removeUnitBonus
|
|
34
32
|
local UnitBonusType = ____bonus.UnitBonusType
|
|
35
33
|
local ____area_2Ddamage = require("engine.internal.mechanics.area-damage")
|
|
36
34
|
local damageArea = ____area_2Ddamage.damageArea
|
|
@@ -44,6 +42,7 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
44
42
|
local ____unit = require("engine.behaviour.unit")
|
|
45
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
46
44
|
local ____arrays = require("utility.arrays")
|
|
45
|
+
local emptyArray = ____arrays.emptyArray
|
|
47
46
|
local forEach = ____arrays.forEach
|
|
48
47
|
local ____event = require("event")
|
|
49
48
|
local Event = ____event.Event
|
|
@@ -53,6 +52,12 @@ local ____item = require("engine.internal.item")
|
|
|
53
52
|
local Item = ____item.Item
|
|
54
53
|
local ____destructable = require("core.types.destructable")
|
|
55
54
|
local Destructable = ____destructable.Destructable
|
|
55
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
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 = {}
|
|
@@ -101,6 +106,7 @@ local buffParametersKeys = {
|
|
|
101
106
|
armorIncreaseFactor = true,
|
|
102
107
|
attackSpeedIncreaseFactor = true,
|
|
103
108
|
movementSpeedIncreaseFactor = true,
|
|
109
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
104
110
|
evasionProbability = true,
|
|
105
111
|
missProbability = true,
|
|
106
112
|
damageFactor = true,
|
|
@@ -124,7 +130,8 @@ local buffParametersKeys = {
|
|
|
124
130
|
damageOnExpiration = true,
|
|
125
131
|
healingOnExpiration = true,
|
|
126
132
|
killsOnExpiration = true,
|
|
127
|
-
explodesOnExpiration = true
|
|
133
|
+
explodesOnExpiration = true,
|
|
134
|
+
abilityCooldownFactor = true
|
|
128
135
|
}
|
|
129
136
|
local function resolveEnumValue(ability, level, value)
|
|
130
137
|
if value == nil or type(value) == "number" then
|
|
@@ -187,6 +194,7 @@ local buffNumberParameters = {
|
|
|
187
194
|
"durationIncreaseOnAutoAttack",
|
|
188
195
|
"attackSpeedIncreaseFactor",
|
|
189
196
|
"movementSpeedIncreaseFactor",
|
|
197
|
+
"manaRegenerationRateIncreaseFactor",
|
|
190
198
|
"evasionProbability",
|
|
191
199
|
"armorIncrease",
|
|
192
200
|
"damageFactor",
|
|
@@ -201,7 +209,8 @@ local buffNumberParameters = {
|
|
|
201
209
|
"healingPerInterval",
|
|
202
210
|
"healingOverDuration",
|
|
203
211
|
"damageOnExpiration",
|
|
204
|
-
"healingOnExpiration"
|
|
212
|
+
"healingOnExpiration",
|
|
213
|
+
"abilityCooldownFactor"
|
|
205
214
|
}
|
|
206
215
|
local unsuccessfulApplicationMarker = {}
|
|
207
216
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -320,33 +329,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
320
329
|
local polarity
|
|
321
330
|
local resistanceType
|
|
322
331
|
local ability
|
|
332
|
+
local abilityBehavior
|
|
323
333
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
324
334
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
325
335
|
polarity = resistanceTypeOrPolarity
|
|
326
336
|
resistanceType = abilityOrParametersOrResistanceType
|
|
327
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
337
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
338
|
+
abilityBehavior = parametersOrAbility
|
|
339
|
+
ability = abilityBehavior.ability
|
|
340
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
328
341
|
ability = parametersOrAbility
|
|
329
|
-
|
|
330
|
-
ability = nil
|
|
342
|
+
elseif parametersOrAbility ~= nil then
|
|
331
343
|
parameters = parametersOrAbility
|
|
332
344
|
end
|
|
333
345
|
else
|
|
334
346
|
typeId = typeIdOrTypeIds
|
|
335
347
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
336
348
|
resistanceType = resistanceTypeOrPolarity
|
|
337
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
349
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
350
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
351
|
+
ability = abilityBehavior.ability
|
|
352
|
+
parameters = parametersOrAbility
|
|
353
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
338
354
|
ability = abilityOrParametersOrResistanceType
|
|
339
355
|
parameters = parametersOrAbility
|
|
340
|
-
|
|
341
|
-
ability = nil
|
|
356
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
342
357
|
parameters = abilityOrParametersOrResistanceType
|
|
358
|
+
else
|
|
359
|
+
parameters = parametersOrAbility
|
|
343
360
|
end
|
|
344
361
|
end
|
|
362
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
345
363
|
self.typeId = typeId
|
|
346
|
-
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
347
|
-
parameters = ability
|
|
348
|
-
ability = nil
|
|
349
|
-
end
|
|
350
364
|
local defaultParameters = self.constructor.defaultParameters
|
|
351
365
|
local level = parameters and parameters.level or defaultParameters.level
|
|
352
366
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -457,24 +471,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
457
471
|
abilityTypeIds = {}
|
|
458
472
|
self._abilityTypeIds = abilityTypeIds
|
|
459
473
|
end
|
|
460
|
-
for
|
|
474
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
475
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
461
476
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
462
477
|
if addedAbility ~= nil then
|
|
463
478
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
464
479
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
474
|
-
)
|
|
475
|
-
end
|
|
480
|
+
if abilityParameters.isButtonVisible == false then
|
|
481
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
482
|
+
end
|
|
483
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
484
|
+
field[1]:setValue(
|
|
485
|
+
addedAbility,
|
|
486
|
+
resolveNumberValue(ability, level, field[2])
|
|
487
|
+
)
|
|
476
488
|
end
|
|
477
|
-
abilityTypeIds[
|
|
489
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
478
490
|
end
|
|
479
491
|
end
|
|
480
492
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -486,18 +498,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
486
498
|
self._behaviors = behaviors
|
|
487
499
|
end
|
|
488
500
|
end
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
if
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
501
|
+
if parameters ~= nil then
|
|
502
|
+
local additionalParameters = {}
|
|
503
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
504
|
+
if not buffParametersKeys[key] then
|
|
505
|
+
if ability then
|
|
506
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
507
|
+
else
|
|
508
|
+
additionalParameters[key] = parameters[key]
|
|
509
|
+
end
|
|
496
510
|
end
|
|
497
511
|
end
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
512
|
+
if (next(additionalParameters)) ~= nil then
|
|
513
|
+
self.parameters = additionalParameters
|
|
514
|
+
end
|
|
501
515
|
end
|
|
502
516
|
end
|
|
503
517
|
if duration ~= nil and duration > 0 then
|
|
@@ -509,63 +523,66 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
509
523
|
self[100] = 1
|
|
510
524
|
Event.invoke(buffCreatedEvent, self)
|
|
511
525
|
end
|
|
512
|
-
function Buff.prototype.
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
526
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
527
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
528
|
+
local abilityCooldownModifier = self[144]
|
|
529
|
+
if abilityCooldownModifier then
|
|
530
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
531
|
+
end
|
|
532
|
+
end
|
|
516
533
|
end
|
|
517
|
-
function Buff.prototype.
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
534
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
535
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
536
|
+
local abilityCooldownModifier = self[144]
|
|
537
|
+
if abilityCooldownModifier then
|
|
538
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
539
|
+
end
|
|
522
540
|
end
|
|
523
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
524
541
|
end
|
|
525
542
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
526
543
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
527
544
|
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
528
545
|
else
|
|
529
546
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
530
|
-
local
|
|
531
|
-
local
|
|
532
|
-
local
|
|
547
|
+
local ____Effect_40 = Effect
|
|
548
|
+
local ____Effect_flash_41 = Effect.flash
|
|
549
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
533
550
|
self[105],
|
|
534
551
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
535
552
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
536
553
|
)
|
|
537
|
-
local
|
|
554
|
+
local ____isWidgetProvided_38
|
|
538
555
|
if isWidgetProvided then
|
|
539
|
-
|
|
556
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
540
557
|
else
|
|
541
|
-
|
|
558
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
542
559
|
end
|
|
543
|
-
__TS__SparseArrayPush(
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
__TS__SparseArraySpread(
|
|
560
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
561
|
+
____Effect_flash_41(
|
|
562
|
+
____Effect_40,
|
|
563
|
+
__TS__SparseArraySpread(____array_39)
|
|
547
564
|
)
|
|
548
565
|
end
|
|
549
566
|
end
|
|
550
567
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
551
568
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
552
|
-
local
|
|
553
|
-
local
|
|
554
|
-
local
|
|
569
|
+
local ____Effect_44 = Effect
|
|
570
|
+
local ____Effect_flash_45 = Effect.flash
|
|
571
|
+
local ____array_43 = __TS__SparseArrayNew(
|
|
555
572
|
self[106],
|
|
556
573
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
557
574
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
558
575
|
)
|
|
559
|
-
local
|
|
576
|
+
local ____isWidgetProvided_42
|
|
560
577
|
if isWidgetProvided then
|
|
561
|
-
|
|
578
|
+
____isWidgetProvided_42 = duration
|
|
562
579
|
else
|
|
563
|
-
|
|
580
|
+
____isWidgetProvided_42 = widgetOrDuration
|
|
564
581
|
end
|
|
565
|
-
__TS__SparseArrayPush(
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
__TS__SparseArraySpread(
|
|
582
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
583
|
+
____Effect_flash_45(
|
|
584
|
+
____Effect_44,
|
|
585
|
+
__TS__SparseArraySpread(____array_43)
|
|
569
586
|
)
|
|
570
587
|
end
|
|
571
588
|
function Buff.prototype.onCreate(self)
|
|
@@ -596,6 +613,12 @@ function Buff.prototype.onDestroy(self)
|
|
|
596
613
|
behavior:destroy()
|
|
597
614
|
end
|
|
598
615
|
end
|
|
616
|
+
local previousAbilityCooldownModifier = self[144]
|
|
617
|
+
if previousAbilityCooldownModifier then
|
|
618
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
619
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
620
|
+
end
|
|
621
|
+
end
|
|
599
622
|
if self[139] then
|
|
600
623
|
unit:decrementInvulnerabilityCounter()
|
|
601
624
|
end
|
|
@@ -604,7 +627,7 @@ function Buff.prototype.onDestroy(self)
|
|
|
604
627
|
end
|
|
605
628
|
if self[136] then
|
|
606
629
|
if self[137] then
|
|
607
|
-
unit:
|
|
630
|
+
unit:decrementForceStunCounter()
|
|
608
631
|
end
|
|
609
632
|
unit:decrementStunCounter()
|
|
610
633
|
end
|
|
@@ -612,15 +635,10 @@ function Buff.prototype.onDestroy(self)
|
|
|
612
635
|
unit:decrementGhostCounter()
|
|
613
636
|
end
|
|
614
637
|
if self._abilityTypeIds ~= nil then
|
|
615
|
-
for abilityTypeId in
|
|
638
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
616
639
|
unit:removeAbility(abilityTypeId)
|
|
617
640
|
end
|
|
618
641
|
end
|
|
619
|
-
if self._bonusIdByBonusType ~= nil then
|
|
620
|
-
for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
|
|
621
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
622
|
-
end
|
|
623
|
-
end
|
|
624
642
|
Event.invoke(buffBeingDestroyedEvent, self)
|
|
625
643
|
self[100] = 3
|
|
626
644
|
return UnitBehavior.prototype.onDestroy(self)
|
|
@@ -650,8 +668,8 @@ function Buff.apply(self, ...)
|
|
|
650
668
|
end
|
|
651
669
|
end
|
|
652
670
|
function Buff.getByTypeId(self, unit, typeId)
|
|
653
|
-
local
|
|
654
|
-
local buff =
|
|
671
|
+
local ____opt_46 = buffByTypeIdByUnit[unit]
|
|
672
|
+
local buff = ____opt_46 and ____opt_46[typeId]
|
|
655
673
|
if __TS__InstanceOf(buff, self) then
|
|
656
674
|
return buff
|
|
657
675
|
end
|
|
@@ -809,8 +827,8 @@ __TS__SetDescriptor(
|
|
|
809
827
|
return
|
|
810
828
|
end
|
|
811
829
|
self[112] = damageInterval
|
|
812
|
-
local
|
|
813
|
-
local elapsed =
|
|
830
|
+
local ____opt_48 = self._timer
|
|
831
|
+
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
814
832
|
local timer = self[114]
|
|
815
833
|
if timer == nil then
|
|
816
834
|
timer = Timer:create()
|
|
@@ -889,8 +907,8 @@ __TS__SetDescriptor(
|
|
|
889
907
|
return
|
|
890
908
|
end
|
|
891
909
|
self[117] = healingInterval
|
|
892
|
-
local
|
|
893
|
-
local elapsed =
|
|
910
|
+
local ____opt_50 = self._timer
|
|
911
|
+
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
894
912
|
local timer = self[119]
|
|
895
913
|
if timer == nil then
|
|
896
914
|
timer = Timer:create()
|
|
@@ -976,11 +994,11 @@ __TS__SetDescriptor(
|
|
|
976
994
|
"turnsIntoGhost",
|
|
977
995
|
{
|
|
978
996
|
get = function(self)
|
|
979
|
-
local
|
|
980
|
-
if
|
|
981
|
-
|
|
997
|
+
local ____self__135_52 = self[135]
|
|
998
|
+
if ____self__135_52 == nil then
|
|
999
|
+
____self__135_52 = false
|
|
982
1000
|
end
|
|
983
|
-
return
|
|
1001
|
+
return ____self__135_52
|
|
984
1002
|
end,
|
|
985
1003
|
set = function(self, turnsIntoGhost)
|
|
986
1004
|
if not turnsIntoGhost and self[135] then
|
|
@@ -999,22 +1017,22 @@ __TS__SetDescriptor(
|
|
|
999
1017
|
"stuns",
|
|
1000
1018
|
{
|
|
1001
1019
|
get = function(self)
|
|
1002
|
-
local
|
|
1003
|
-
if
|
|
1004
|
-
|
|
1020
|
+
local ____self__136_53 = self[136]
|
|
1021
|
+
if ____self__136_53 == nil then
|
|
1022
|
+
____self__136_53 = false
|
|
1005
1023
|
end
|
|
1006
|
-
return
|
|
1024
|
+
return ____self__136_53
|
|
1007
1025
|
end,
|
|
1008
1026
|
set = function(self, stuns)
|
|
1009
1027
|
if not stuns and self[136] then
|
|
1010
1028
|
if self[137] then
|
|
1011
|
-
self.object:
|
|
1029
|
+
self.object:decrementForceStunCounter()
|
|
1012
1030
|
end
|
|
1013
1031
|
self.object:decrementStunCounter()
|
|
1014
1032
|
self[136] = nil
|
|
1015
1033
|
elseif stuns and not self[136] then
|
|
1016
1034
|
if self[137] then
|
|
1017
|
-
self.object:
|
|
1035
|
+
self.object:incrementForceStunCounter()
|
|
1018
1036
|
end
|
|
1019
1037
|
self.object:incrementStunCounter()
|
|
1020
1038
|
self[136] = true
|
|
@@ -1028,21 +1046,21 @@ __TS__SetDescriptor(
|
|
|
1028
1046
|
"ignoresStunImmunity",
|
|
1029
1047
|
{
|
|
1030
1048
|
get = function(self)
|
|
1031
|
-
local
|
|
1032
|
-
if
|
|
1033
|
-
|
|
1049
|
+
local ____self__137_54 = self[137]
|
|
1050
|
+
if ____self__137_54 == nil then
|
|
1051
|
+
____self__137_54 = false
|
|
1034
1052
|
end
|
|
1035
|
-
return
|
|
1053
|
+
return ____self__137_54
|
|
1036
1054
|
end,
|
|
1037
1055
|
set = function(self, ignoresStunImmunity)
|
|
1038
1056
|
if not ignoresStunImmunity and self[137] then
|
|
1039
1057
|
if self[136] then
|
|
1040
|
-
self.object:
|
|
1058
|
+
self.object:decrementForceStunCounter()
|
|
1041
1059
|
end
|
|
1042
1060
|
self[137] = nil
|
|
1043
1061
|
elseif ignoresStunImmunity and not self[137] then
|
|
1044
1062
|
if self[136] then
|
|
1045
|
-
self.object:
|
|
1063
|
+
self.object:incrementForceStunCounter()
|
|
1046
1064
|
end
|
|
1047
1065
|
self[137] = true
|
|
1048
1066
|
end
|
|
@@ -1055,11 +1073,11 @@ __TS__SetDescriptor(
|
|
|
1055
1073
|
"disablesAutoAttack",
|
|
1056
1074
|
{
|
|
1057
1075
|
get = function(self)
|
|
1058
|
-
local
|
|
1059
|
-
if
|
|
1060
|
-
|
|
1076
|
+
local ____self__138_55 = self[138]
|
|
1077
|
+
if ____self__138_55 == nil then
|
|
1078
|
+
____self__138_55 = false
|
|
1061
1079
|
end
|
|
1062
|
-
return
|
|
1080
|
+
return ____self__138_55
|
|
1063
1081
|
end,
|
|
1064
1082
|
set = function(self, disablesAutoAttack)
|
|
1065
1083
|
if not disablesAutoAttack and self[138] then
|
|
@@ -1078,11 +1096,11 @@ __TS__SetDescriptor(
|
|
|
1078
1096
|
"providesInvulnerability",
|
|
1079
1097
|
{
|
|
1080
1098
|
get = function(self)
|
|
1081
|
-
local
|
|
1082
|
-
if
|
|
1083
|
-
|
|
1099
|
+
local ____self__139_56 = self[139]
|
|
1100
|
+
if ____self__139_56 == nil then
|
|
1101
|
+
____self__139_56 = false
|
|
1084
1102
|
end
|
|
1085
|
-
return
|
|
1103
|
+
return ____self__139_56
|
|
1086
1104
|
end,
|
|
1087
1105
|
set = function(self, providesInvulnerability)
|
|
1088
1106
|
if not providesInvulnerability and self[139] then
|
|
@@ -1101,11 +1119,11 @@ __TS__SetDescriptor(
|
|
|
1101
1119
|
"killsOnExpiration",
|
|
1102
1120
|
{
|
|
1103
1121
|
get = function(self)
|
|
1104
|
-
local
|
|
1105
|
-
if
|
|
1106
|
-
|
|
1122
|
+
local ____self__140_57 = self[140]
|
|
1123
|
+
if ____self__140_57 == nil then
|
|
1124
|
+
____self__140_57 = false
|
|
1107
1125
|
end
|
|
1108
|
-
return
|
|
1126
|
+
return ____self__140_57
|
|
1109
1127
|
end,
|
|
1110
1128
|
set = function(self, killsOnExpiration)
|
|
1111
1129
|
if not killsOnExpiration and self[140] then
|
|
@@ -1122,11 +1140,11 @@ __TS__SetDescriptor(
|
|
|
1122
1140
|
"explodesOnExpiration",
|
|
1123
1141
|
{
|
|
1124
1142
|
get = function(self)
|
|
1125
|
-
local
|
|
1126
|
-
if
|
|
1127
|
-
|
|
1143
|
+
local ____self__141_58 = self[141]
|
|
1144
|
+
if ____self__141_58 == nil then
|
|
1145
|
+
____self__141_58 = false
|
|
1128
1146
|
end
|
|
1129
|
-
return
|
|
1147
|
+
return ____self__141_58
|
|
1130
1148
|
end,
|
|
1131
1149
|
set = function(self, killsOnExpiration)
|
|
1132
1150
|
if not killsOnExpiration and self[141] then
|
|
@@ -1241,6 +1259,19 @@ __TS__SetDescriptor(
|
|
|
1241
1259
|
},
|
|
1242
1260
|
true
|
|
1243
1261
|
)
|
|
1262
|
+
__TS__SetDescriptor(
|
|
1263
|
+
Buff.prototype,
|
|
1264
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1265
|
+
{
|
|
1266
|
+
get = function(self)
|
|
1267
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1268
|
+
end,
|
|
1269
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1270
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1271
|
+
end
|
|
1272
|
+
},
|
|
1273
|
+
true
|
|
1274
|
+
)
|
|
1244
1275
|
__TS__SetDescriptor(
|
|
1245
1276
|
Buff.prototype,
|
|
1246
1277
|
"duration",
|
|
@@ -1254,13 +1285,13 @@ __TS__SetDescriptor(
|
|
|
1254
1285
|
"remainingDuration",
|
|
1255
1286
|
{
|
|
1256
1287
|
get = function(self)
|
|
1257
|
-
local
|
|
1258
|
-
return
|
|
1288
|
+
local ____opt_59 = self._timer
|
|
1289
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1259
1290
|
end,
|
|
1260
1291
|
set = function(self, remainingDuration)
|
|
1261
|
-
local
|
|
1262
|
-
local
|
|
1263
|
-
local remainingDurationDelta =
|
|
1292
|
+
local ____remainingDuration_63 = remainingDuration
|
|
1293
|
+
local ____opt_61 = self._timer
|
|
1294
|
+
local remainingDurationDelta = ____remainingDuration_63 - (____opt_61 and ____opt_61.remaining or 0)
|
|
1264
1295
|
if remainingDurationDelta ~= 0 then
|
|
1265
1296
|
self[103] = self[103] + remainingDurationDelta
|
|
1266
1297
|
if remainingDuration <= 0 then
|
|
@@ -1290,6 +1321,32 @@ __TS__SetDescriptor(
|
|
|
1290
1321
|
},
|
|
1291
1322
|
true
|
|
1292
1323
|
)
|
|
1324
|
+
__TS__SetDescriptor(
|
|
1325
|
+
Buff.prototype,
|
|
1326
|
+
"abilityCooldownFactor",
|
|
1327
|
+
{
|
|
1328
|
+
get = function(self)
|
|
1329
|
+
return self[143] or 1
|
|
1330
|
+
end,
|
|
1331
|
+
set = function(self, abilityCooldownFactor)
|
|
1332
|
+
local previousAbilityCooldownModifier = self[144]
|
|
1333
|
+
if previousAbilityCooldownModifier then
|
|
1334
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1335
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1336
|
+
end
|
|
1337
|
+
end
|
|
1338
|
+
local function modifier(ability, level, cooldown)
|
|
1339
|
+
return cooldown * abilityCooldownFactor
|
|
1340
|
+
end
|
|
1341
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1342
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1343
|
+
end
|
|
1344
|
+
self[144] = modifier
|
|
1345
|
+
self[143] = abilityCooldownFactor
|
|
1346
|
+
end
|
|
1347
|
+
},
|
|
1348
|
+
true
|
|
1349
|
+
)
|
|
1293
1350
|
Buff.createdEvent = buffCreatedEvent
|
|
1294
1351
|
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1295
1352
|
(function(self)
|
|
@@ -1348,5 +1405,8 @@ Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
|
1348
1405
|
buffCreatedEvent:addListener(function(buff)
|
|
1349
1406
|
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1350
1407
|
end)
|
|
1408
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1409
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1410
|
+
end)
|
|
1351
1411
|
end)(Buff)
|
|
1352
1412
|
return ____exports
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
-
import { Handle } from "../../core/types/handle";
|
|
2
|
+
import { Handle, HandleDestructor } from "../../core/types/handle";
|
|
3
3
|
import { Event } from "../../event";
|
|
4
4
|
import type { Item } from "../../core/types/item";
|
|
5
5
|
import type { Unit } from "./unit";
|
|
@@ -67,6 +67,7 @@ export declare class UnitAbility extends Ability {
|
|
|
67
67
|
get cooldownRemaining(): number;
|
|
68
68
|
set cooldownRemaining(cooldownRemaining: number);
|
|
69
69
|
interruptCast(): void;
|
|
70
|
+
protected onDestroy(): HandleDestructor;
|
|
70
71
|
static get onCreate(): Event<[UnitAbility]>;
|
|
71
72
|
static get onDestroy(): Event<[UnitAbility]>;
|
|
72
73
|
}
|
|
@@ -93,6 +94,7 @@ export declare class ItemAbility extends Ability {
|
|
|
93
94
|
get cooldownRemaining(): number;
|
|
94
95
|
set cooldownRemaining(cooldownRemaining: number);
|
|
95
96
|
interruptCast(): void;
|
|
97
|
+
protected onDestroy(): HandleDestructor;
|
|
96
98
|
static get onCreate(): Event<[ItemAbility]>;
|
|
97
99
|
static get onDestroy(): Event<[ItemAbility]>;
|
|
98
100
|
}
|
|
@@ -232,6 +232,19 @@ ____exports.getOrderIdByAbilityTypeId = function(abilityTypeId)
|
|
|
232
232
|
local parentTypeId = availableFields[abilityTypeId]
|
|
233
233
|
return order2orderId(orders[____type(parentTypeId) == "number" and parentTypeId or abilityTypeId] or "")
|
|
234
234
|
end
|
|
235
|
+
---
|
|
236
|
+
-- @internal For use by internal systems only.
|
|
237
|
+
____exports.abilityTypeHasField = function(abilityTypeId, field)
|
|
238
|
+
field = ____type(field) == "number" and field or getHandleId(field)
|
|
239
|
+
if commonFields[field] then
|
|
240
|
+
return true
|
|
241
|
+
end
|
|
242
|
+
local id = availableFields[abilityTypeId]
|
|
243
|
+
if ____type(id) == "number" then
|
|
244
|
+
id = availableFields[id]
|
|
245
|
+
end
|
|
246
|
+
return not not (id and id[field])
|
|
247
|
+
end
|
|
235
248
|
____exports.Ability = __TS__Class()
|
|
236
249
|
local Ability = ____exports.Ability
|
|
237
250
|
Ability.name = "Ability"
|
|
@@ -247,15 +260,7 @@ function Ability.prototype.getSnapshot(self)
|
|
|
247
260
|
return nil
|
|
248
261
|
end
|
|
249
262
|
function Ability.prototype.hasField(self, field)
|
|
250
|
-
|
|
251
|
-
if commonFields[field] then
|
|
252
|
-
return true
|
|
253
|
-
end
|
|
254
|
-
local id = availableFields[self.typeId]
|
|
255
|
-
if ____type(id) == "number" then
|
|
256
|
-
id = availableFields[id]
|
|
257
|
-
end
|
|
258
|
-
return not not (id and id[field])
|
|
263
|
+
return ____exports.abilityTypeHasField(self.typeId, field)
|
|
259
264
|
end
|
|
260
265
|
function Ability.prototype.getField(self, field, level)
|
|
261
266
|
local fieldType = match(
|
|
@@ -420,6 +425,12 @@ end
|
|
|
420
425
|
function UnitAbility.prototype.interruptCast(self)
|
|
421
426
|
self.owner:interruptCast(self.typeId)
|
|
422
427
|
end
|
|
428
|
+
function UnitAbility.prototype.onDestroy(self)
|
|
429
|
+
if self.owner.state ~= 2 then
|
|
430
|
+
self.owner:removeAbility(self.typeId)
|
|
431
|
+
end
|
|
432
|
+
return UnitAbility.____super.prototype.onDestroy(self)
|
|
433
|
+
end
|
|
423
434
|
__TS__SetDescriptor(
|
|
424
435
|
UnitAbility.prototype,
|
|
425
436
|
"isDisabled",
|
|
@@ -512,6 +523,12 @@ function ItemAbility.prototype.interruptCast(self)
|
|
|
512
523
|
setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, true)
|
|
513
524
|
end
|
|
514
525
|
end
|
|
526
|
+
function ItemAbility.prototype.onDestroy(self)
|
|
527
|
+
if self.owner.state ~= 2 then
|
|
528
|
+
self.owner:removeAbility(self.typeId)
|
|
529
|
+
end
|
|
530
|
+
return ItemAbility.____super.prototype.onDestroy(self)
|
|
531
|
+
end
|
|
515
532
|
__TS__SetDescriptor(
|
|
516
533
|
ItemAbility.prototype,
|
|
517
534
|
"level",
|