warscript 0.0.1-dev.effa673 → 0.0.1-dev.f074376
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 +6 -0
- package/attributes.lua +17 -1
- package/core/types/frame.lua +24 -21
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.lua +5 -0
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +5 -5
- package/engine/behaviour/ability/damage.d.ts +6 -3
- package/engine/behaviour/ability/damage.lua +24 -36
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +18 -3
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +2 -1
- package/engine/behaviour/ability.lua +10 -18
- package/engine/behaviour/unit/stun-immunity.d.ts +11 -5
- package/engine/behaviour/unit/stun-immunity.lua +53 -28
- package/engine/behaviour/unit.d.ts +39 -3
- package/engine/behaviour/unit.lua +259 -6
- package/engine/buff.d.ts +17 -6
- package/engine/buff.lua +160 -97
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +49 -9
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +18 -17
- package/engine/internal/item.lua +135 -49
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -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 +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- 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/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -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+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +45 -14
- package/engine/internal/unit.d.ts +39 -19
- package/engine/internal/unit.lua +329 -169
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +1 -1
- package/engine/object-data/auxiliary/attachment-preset.lua +3 -2
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -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/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -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/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type.lua +11 -3
- package/engine/object-data/entry/buff-type/applicable.lua +5 -0
- package/engine/object-data/entry/buff-type.d.ts +5 -11
- package/engine/object-data/entry/buff-type.lua +11 -27
- 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 +17 -4
- package/engine/object-data/entry/unit-type.lua +197 -85
- package/engine/object-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +23 -6
- package/engine/object-field.lua +335 -118
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -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 +7 -0
- package/engine/standard/fields/unit.lua +13 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +3 -0
- package/engine/unit.lua +3 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +2 -3
- package/package.json +2 -2
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-set.d.ts +2 -0
- package/utility/linked-set.lua +22 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
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
|
|
@@ -53,6 +51,10 @@ local ____item = require("engine.internal.item")
|
|
|
53
51
|
local Item = ____item.Item
|
|
54
52
|
local ____destructable = require("core.types.destructable")
|
|
55
53
|
local Destructable = ____destructable.Destructable
|
|
54
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
55
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
56
|
+
local ____ability = require("engine.behaviour.ability")
|
|
57
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
56
58
|
local getUnitAbility = BlzGetUnitAbility
|
|
57
59
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
58
60
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -101,6 +103,7 @@ local buffParametersKeys = {
|
|
|
101
103
|
armorIncreaseFactor = true,
|
|
102
104
|
attackSpeedIncreaseFactor = true,
|
|
103
105
|
movementSpeedIncreaseFactor = true,
|
|
106
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
104
107
|
evasionProbability = true,
|
|
105
108
|
missProbability = true,
|
|
106
109
|
damageFactor = true,
|
|
@@ -124,7 +127,8 @@ local buffParametersKeys = {
|
|
|
124
127
|
damageOnExpiration = true,
|
|
125
128
|
healingOnExpiration = true,
|
|
126
129
|
killsOnExpiration = true,
|
|
127
|
-
explodesOnExpiration = true
|
|
130
|
+
explodesOnExpiration = true,
|
|
131
|
+
abilityCooldownFactor = true
|
|
128
132
|
}
|
|
129
133
|
local function resolveEnumValue(ability, level, value)
|
|
130
134
|
if value == nil or type(value) == "number" then
|
|
@@ -187,6 +191,7 @@ local buffNumberParameters = {
|
|
|
187
191
|
"durationIncreaseOnAutoAttack",
|
|
188
192
|
"attackSpeedIncreaseFactor",
|
|
189
193
|
"movementSpeedIncreaseFactor",
|
|
194
|
+
"manaRegenerationRateIncreaseFactor",
|
|
190
195
|
"evasionProbability",
|
|
191
196
|
"armorIncrease",
|
|
192
197
|
"damageFactor",
|
|
@@ -201,7 +206,8 @@ local buffNumberParameters = {
|
|
|
201
206
|
"healingPerInterval",
|
|
202
207
|
"healingOverDuration",
|
|
203
208
|
"damageOnExpiration",
|
|
204
|
-
"healingOnExpiration"
|
|
209
|
+
"healingOnExpiration",
|
|
210
|
+
"abilityCooldownFactor"
|
|
205
211
|
}
|
|
206
212
|
local unsuccessfulApplicationMarker = {}
|
|
207
213
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -304,7 +310,8 @@ buffHealingIntervalTimerCallback = function(buff)
|
|
|
304
310
|
source:healTarget(buff[101], healingPerInterval)
|
|
305
311
|
end
|
|
306
312
|
end
|
|
307
|
-
local
|
|
313
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
314
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
308
315
|
____exports.Buff = __TS__Class()
|
|
309
316
|
local Buff = ____exports.Buff
|
|
310
317
|
Buff.name = "Buff"
|
|
@@ -319,33 +326,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
319
326
|
local polarity
|
|
320
327
|
local resistanceType
|
|
321
328
|
local ability
|
|
329
|
+
local abilityBehavior
|
|
322
330
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
323
331
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
324
332
|
polarity = resistanceTypeOrPolarity
|
|
325
333
|
resistanceType = abilityOrParametersOrResistanceType
|
|
326
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
334
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
335
|
+
abilityBehavior = parametersOrAbility
|
|
336
|
+
ability = abilityBehavior.ability
|
|
337
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
327
338
|
ability = parametersOrAbility
|
|
328
|
-
|
|
329
|
-
ability = nil
|
|
339
|
+
elseif parametersOrAbility ~= nil then
|
|
330
340
|
parameters = parametersOrAbility
|
|
331
341
|
end
|
|
332
342
|
else
|
|
333
343
|
typeId = typeIdOrTypeIds
|
|
334
344
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
335
345
|
resistanceType = resistanceTypeOrPolarity
|
|
336
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
346
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
347
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
348
|
+
ability = abilityBehavior.ability
|
|
349
|
+
parameters = parametersOrAbility
|
|
350
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
337
351
|
ability = abilityOrParametersOrResistanceType
|
|
338
352
|
parameters = parametersOrAbility
|
|
339
|
-
|
|
340
|
-
ability = nil
|
|
353
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
341
354
|
parameters = abilityOrParametersOrResistanceType
|
|
355
|
+
else
|
|
356
|
+
parameters = parametersOrAbility
|
|
342
357
|
end
|
|
343
358
|
end
|
|
359
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
344
360
|
self.typeId = typeId
|
|
345
|
-
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
346
|
-
parameters = ability
|
|
347
|
-
ability = nil
|
|
348
|
-
end
|
|
349
361
|
local defaultParameters = self.constructor.defaultParameters
|
|
350
362
|
local level = parameters and parameters.level or defaultParameters.level
|
|
351
363
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -506,64 +518,68 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
506
518
|
end
|
|
507
519
|
self:onCreate()
|
|
508
520
|
self[100] = 1
|
|
521
|
+
Event.invoke(buffCreatedEvent, self)
|
|
509
522
|
end
|
|
510
|
-
function Buff.prototype.
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
523
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
524
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
525
|
+
local abilityCooldownModifier = self[144]
|
|
526
|
+
if abilityCooldownModifier then
|
|
527
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
528
|
+
end
|
|
529
|
+
end
|
|
514
530
|
end
|
|
515
|
-
function Buff.prototype.
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
531
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
532
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
533
|
+
local abilityCooldownModifier = self[144]
|
|
534
|
+
if abilityCooldownModifier then
|
|
535
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
536
|
+
end
|
|
520
537
|
end
|
|
521
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
522
538
|
end
|
|
523
539
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
524
540
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
525
541
|
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
526
542
|
else
|
|
527
543
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
528
|
-
local
|
|
529
|
-
local
|
|
530
|
-
local
|
|
544
|
+
local ____Effect_40 = Effect
|
|
545
|
+
local ____Effect_flash_41 = Effect.flash
|
|
546
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
531
547
|
self[105],
|
|
532
548
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
533
549
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
534
550
|
)
|
|
535
|
-
local
|
|
551
|
+
local ____isWidgetProvided_38
|
|
536
552
|
if isWidgetProvided then
|
|
537
|
-
|
|
553
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
538
554
|
else
|
|
539
|
-
|
|
555
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
540
556
|
end
|
|
541
|
-
__TS__SparseArrayPush(
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
__TS__SparseArraySpread(
|
|
557
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
558
|
+
____Effect_flash_41(
|
|
559
|
+
____Effect_40,
|
|
560
|
+
__TS__SparseArraySpread(____array_39)
|
|
545
561
|
)
|
|
546
562
|
end
|
|
547
563
|
end
|
|
548
564
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
549
565
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
550
|
-
local
|
|
551
|
-
local
|
|
552
|
-
local
|
|
566
|
+
local ____Effect_44 = Effect
|
|
567
|
+
local ____Effect_flash_45 = Effect.flash
|
|
568
|
+
local ____array_43 = __TS__SparseArrayNew(
|
|
553
569
|
self[106],
|
|
554
570
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
555
571
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
556
572
|
)
|
|
557
|
-
local
|
|
573
|
+
local ____isWidgetProvided_42
|
|
558
574
|
if isWidgetProvided then
|
|
559
|
-
|
|
575
|
+
____isWidgetProvided_42 = duration
|
|
560
576
|
else
|
|
561
|
-
|
|
577
|
+
____isWidgetProvided_42 = widgetOrDuration
|
|
562
578
|
end
|
|
563
|
-
__TS__SparseArrayPush(
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
__TS__SparseArraySpread(
|
|
579
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
580
|
+
____Effect_flash_45(
|
|
581
|
+
____Effect_44,
|
|
582
|
+
__TS__SparseArraySpread(____array_43)
|
|
567
583
|
)
|
|
568
584
|
end
|
|
569
585
|
function Buff.prototype.onCreate(self)
|
|
@@ -594,6 +610,12 @@ function Buff.prototype.onDestroy(self)
|
|
|
594
610
|
behavior:destroy()
|
|
595
611
|
end
|
|
596
612
|
end
|
|
613
|
+
local previousAbilityCooldownModifier = self[144]
|
|
614
|
+
if previousAbilityCooldownModifier then
|
|
615
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
616
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
617
|
+
end
|
|
618
|
+
end
|
|
597
619
|
if self[139] then
|
|
598
620
|
unit:decrementInvulnerabilityCounter()
|
|
599
621
|
end
|
|
@@ -602,7 +624,7 @@ function Buff.prototype.onDestroy(self)
|
|
|
602
624
|
end
|
|
603
625
|
if self[136] then
|
|
604
626
|
if self[137] then
|
|
605
|
-
unit:
|
|
627
|
+
unit:decrementForceStunCounter()
|
|
606
628
|
end
|
|
607
629
|
unit:decrementStunCounter()
|
|
608
630
|
end
|
|
@@ -614,12 +636,7 @@ function Buff.prototype.onDestroy(self)
|
|
|
614
636
|
unit:removeAbility(abilityTypeId)
|
|
615
637
|
end
|
|
616
638
|
end
|
|
617
|
-
|
|
618
|
-
for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
|
|
619
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
620
|
-
end
|
|
621
|
-
end
|
|
622
|
-
Event.invoke(buffDestroyEvent, self)
|
|
639
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
623
640
|
self[100] = 3
|
|
624
641
|
return UnitBehavior.prototype.onDestroy(self)
|
|
625
642
|
end
|
|
@@ -648,8 +665,8 @@ function Buff.apply(self, ...)
|
|
|
648
665
|
end
|
|
649
666
|
end
|
|
650
667
|
function Buff.getByTypeId(self, unit, typeId)
|
|
651
|
-
local
|
|
652
|
-
local buff =
|
|
668
|
+
local ____opt_46 = buffByTypeIdByUnit[unit]
|
|
669
|
+
local buff = ____opt_46 and ____opt_46[typeId]
|
|
653
670
|
if __TS__InstanceOf(buff, self) then
|
|
654
671
|
return buff
|
|
655
672
|
end
|
|
@@ -807,8 +824,8 @@ __TS__SetDescriptor(
|
|
|
807
824
|
return
|
|
808
825
|
end
|
|
809
826
|
self[112] = damageInterval
|
|
810
|
-
local
|
|
811
|
-
local elapsed =
|
|
827
|
+
local ____opt_48 = self._timer
|
|
828
|
+
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
812
829
|
local timer = self[114]
|
|
813
830
|
if timer == nil then
|
|
814
831
|
timer = Timer:create()
|
|
@@ -887,8 +904,8 @@ __TS__SetDescriptor(
|
|
|
887
904
|
return
|
|
888
905
|
end
|
|
889
906
|
self[117] = healingInterval
|
|
890
|
-
local
|
|
891
|
-
local elapsed =
|
|
907
|
+
local ____opt_50 = self._timer
|
|
908
|
+
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
892
909
|
local timer = self[119]
|
|
893
910
|
if timer == nil then
|
|
894
911
|
timer = Timer:create()
|
|
@@ -974,11 +991,11 @@ __TS__SetDescriptor(
|
|
|
974
991
|
"turnsIntoGhost",
|
|
975
992
|
{
|
|
976
993
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
994
|
+
local ____self__135_52 = self[135]
|
|
995
|
+
if ____self__135_52 == nil then
|
|
996
|
+
____self__135_52 = false
|
|
980
997
|
end
|
|
981
|
-
return
|
|
998
|
+
return ____self__135_52
|
|
982
999
|
end,
|
|
983
1000
|
set = function(self, turnsIntoGhost)
|
|
984
1001
|
if not turnsIntoGhost and self[135] then
|
|
@@ -997,22 +1014,22 @@ __TS__SetDescriptor(
|
|
|
997
1014
|
"stuns",
|
|
998
1015
|
{
|
|
999
1016
|
get = function(self)
|
|
1000
|
-
local
|
|
1001
|
-
if
|
|
1002
|
-
|
|
1017
|
+
local ____self__136_53 = self[136]
|
|
1018
|
+
if ____self__136_53 == nil then
|
|
1019
|
+
____self__136_53 = false
|
|
1003
1020
|
end
|
|
1004
|
-
return
|
|
1021
|
+
return ____self__136_53
|
|
1005
1022
|
end,
|
|
1006
1023
|
set = function(self, stuns)
|
|
1007
1024
|
if not stuns and self[136] then
|
|
1008
1025
|
if self[137] then
|
|
1009
|
-
self.object:
|
|
1026
|
+
self.object:decrementForceStunCounter()
|
|
1010
1027
|
end
|
|
1011
1028
|
self.object:decrementStunCounter()
|
|
1012
1029
|
self[136] = nil
|
|
1013
1030
|
elseif stuns and not self[136] then
|
|
1014
1031
|
if self[137] then
|
|
1015
|
-
self.object:
|
|
1032
|
+
self.object:incrementForceStunCounter()
|
|
1016
1033
|
end
|
|
1017
1034
|
self.object:incrementStunCounter()
|
|
1018
1035
|
self[136] = true
|
|
@@ -1026,21 +1043,21 @@ __TS__SetDescriptor(
|
|
|
1026
1043
|
"ignoresStunImmunity",
|
|
1027
1044
|
{
|
|
1028
1045
|
get = function(self)
|
|
1029
|
-
local
|
|
1030
|
-
if
|
|
1031
|
-
|
|
1046
|
+
local ____self__137_54 = self[137]
|
|
1047
|
+
if ____self__137_54 == nil then
|
|
1048
|
+
____self__137_54 = false
|
|
1032
1049
|
end
|
|
1033
|
-
return
|
|
1050
|
+
return ____self__137_54
|
|
1034
1051
|
end,
|
|
1035
1052
|
set = function(self, ignoresStunImmunity)
|
|
1036
1053
|
if not ignoresStunImmunity and self[137] then
|
|
1037
1054
|
if self[136] then
|
|
1038
|
-
self.object:
|
|
1055
|
+
self.object:decrementForceStunCounter()
|
|
1039
1056
|
end
|
|
1040
1057
|
self[137] = nil
|
|
1041
1058
|
elseif ignoresStunImmunity and not self[137] then
|
|
1042
1059
|
if self[136] then
|
|
1043
|
-
self.object:
|
|
1060
|
+
self.object:incrementForceStunCounter()
|
|
1044
1061
|
end
|
|
1045
1062
|
self[137] = true
|
|
1046
1063
|
end
|
|
@@ -1053,11 +1070,11 @@ __TS__SetDescriptor(
|
|
|
1053
1070
|
"disablesAutoAttack",
|
|
1054
1071
|
{
|
|
1055
1072
|
get = function(self)
|
|
1056
|
-
local
|
|
1057
|
-
if
|
|
1058
|
-
|
|
1073
|
+
local ____self__138_55 = self[138]
|
|
1074
|
+
if ____self__138_55 == nil then
|
|
1075
|
+
____self__138_55 = false
|
|
1059
1076
|
end
|
|
1060
|
-
return
|
|
1077
|
+
return ____self__138_55
|
|
1061
1078
|
end,
|
|
1062
1079
|
set = function(self, disablesAutoAttack)
|
|
1063
1080
|
if not disablesAutoAttack and self[138] then
|
|
@@ -1076,11 +1093,11 @@ __TS__SetDescriptor(
|
|
|
1076
1093
|
"providesInvulnerability",
|
|
1077
1094
|
{
|
|
1078
1095
|
get = function(self)
|
|
1079
|
-
local
|
|
1080
|
-
if
|
|
1081
|
-
|
|
1096
|
+
local ____self__139_56 = self[139]
|
|
1097
|
+
if ____self__139_56 == nil then
|
|
1098
|
+
____self__139_56 = false
|
|
1082
1099
|
end
|
|
1083
|
-
return
|
|
1100
|
+
return ____self__139_56
|
|
1084
1101
|
end,
|
|
1085
1102
|
set = function(self, providesInvulnerability)
|
|
1086
1103
|
if not providesInvulnerability and self[139] then
|
|
@@ -1099,11 +1116,11 @@ __TS__SetDescriptor(
|
|
|
1099
1116
|
"killsOnExpiration",
|
|
1100
1117
|
{
|
|
1101
1118
|
get = function(self)
|
|
1102
|
-
local
|
|
1103
|
-
if
|
|
1104
|
-
|
|
1119
|
+
local ____self__140_57 = self[140]
|
|
1120
|
+
if ____self__140_57 == nil then
|
|
1121
|
+
____self__140_57 = false
|
|
1105
1122
|
end
|
|
1106
|
-
return
|
|
1123
|
+
return ____self__140_57
|
|
1107
1124
|
end,
|
|
1108
1125
|
set = function(self, killsOnExpiration)
|
|
1109
1126
|
if not killsOnExpiration and self[140] then
|
|
@@ -1120,11 +1137,11 @@ __TS__SetDescriptor(
|
|
|
1120
1137
|
"explodesOnExpiration",
|
|
1121
1138
|
{
|
|
1122
1139
|
get = function(self)
|
|
1123
|
-
local
|
|
1124
|
-
if
|
|
1125
|
-
|
|
1140
|
+
local ____self__141_58 = self[141]
|
|
1141
|
+
if ____self__141_58 == nil then
|
|
1142
|
+
____self__141_58 = false
|
|
1126
1143
|
end
|
|
1127
|
-
return
|
|
1144
|
+
return ____self__141_58
|
|
1128
1145
|
end,
|
|
1129
1146
|
set = function(self, killsOnExpiration)
|
|
1130
1147
|
if not killsOnExpiration and self[141] then
|
|
@@ -1239,6 +1256,19 @@ __TS__SetDescriptor(
|
|
|
1239
1256
|
},
|
|
1240
1257
|
true
|
|
1241
1258
|
)
|
|
1259
|
+
__TS__SetDescriptor(
|
|
1260
|
+
Buff.prototype,
|
|
1261
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1262
|
+
{
|
|
1263
|
+
get = function(self)
|
|
1264
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1265
|
+
end,
|
|
1266
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1267
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1268
|
+
end
|
|
1269
|
+
},
|
|
1270
|
+
true
|
|
1271
|
+
)
|
|
1242
1272
|
__TS__SetDescriptor(
|
|
1243
1273
|
Buff.prototype,
|
|
1244
1274
|
"duration",
|
|
@@ -1252,13 +1282,13 @@ __TS__SetDescriptor(
|
|
|
1252
1282
|
"remainingDuration",
|
|
1253
1283
|
{
|
|
1254
1284
|
get = function(self)
|
|
1255
|
-
local
|
|
1256
|
-
return
|
|
1285
|
+
local ____opt_59 = self._timer
|
|
1286
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1257
1287
|
end,
|
|
1258
1288
|
set = function(self, remainingDuration)
|
|
1259
|
-
local
|
|
1260
|
-
local
|
|
1261
|
-
local remainingDurationDelta =
|
|
1289
|
+
local ____remainingDuration_63 = remainingDuration
|
|
1290
|
+
local ____opt_61 = self._timer
|
|
1291
|
+
local remainingDurationDelta = ____remainingDuration_63 - (____opt_61 and ____opt_61.remaining or 0)
|
|
1262
1292
|
if remainingDurationDelta ~= 0 then
|
|
1263
1293
|
self[103] = self[103] + remainingDurationDelta
|
|
1264
1294
|
if remainingDuration <= 0 then
|
|
@@ -1288,7 +1318,34 @@ __TS__SetDescriptor(
|
|
|
1288
1318
|
},
|
|
1289
1319
|
true
|
|
1290
1320
|
)
|
|
1291
|
-
|
|
1321
|
+
__TS__SetDescriptor(
|
|
1322
|
+
Buff.prototype,
|
|
1323
|
+
"abilityCooldownFactor",
|
|
1324
|
+
{
|
|
1325
|
+
get = function(self)
|
|
1326
|
+
return self[143] or 1
|
|
1327
|
+
end,
|
|
1328
|
+
set = function(self, abilityCooldownFactor)
|
|
1329
|
+
local previousAbilityCooldownModifier = self[144]
|
|
1330
|
+
if previousAbilityCooldownModifier then
|
|
1331
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1332
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1333
|
+
end
|
|
1334
|
+
end
|
|
1335
|
+
local function modifier(ability, level, cooldown)
|
|
1336
|
+
return cooldown * abilityCooldownFactor
|
|
1337
|
+
end
|
|
1338
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1339
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1340
|
+
end
|
|
1341
|
+
self[144] = modifier
|
|
1342
|
+
self[143] = abilityCooldownFactor
|
|
1343
|
+
end
|
|
1344
|
+
},
|
|
1345
|
+
true
|
|
1346
|
+
)
|
|
1347
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1348
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1292
1349
|
(function(self)
|
|
1293
1350
|
local function destroyBuffIfNeeded(buff)
|
|
1294
1351
|
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
@@ -1342,5 +1399,11 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1342
1399
|
____exports.checkBuffs(target)
|
|
1343
1400
|
end
|
|
1344
1401
|
)
|
|
1402
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1403
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1404
|
+
end)
|
|
1405
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1406
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1407
|
+
end)
|
|
1345
1408
|
end)(Buff)
|
|
1346
1409
|
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";
|
|
@@ -55,14 +55,19 @@ export declare class UnrecognizedAbility extends Ability {
|
|
|
55
55
|
export declare class UnitAbility extends Ability {
|
|
56
56
|
readonly owner: Unit;
|
|
57
57
|
private readonly u;
|
|
58
|
+
private d?;
|
|
58
59
|
constructor(handle: jability, typeId: number, owner: Unit);
|
|
59
60
|
incrementHideCounter(): void;
|
|
60
61
|
decrementHideCounter(): void;
|
|
62
|
+
incrementDisableCounter(): void;
|
|
63
|
+
decrementDisableCounter(): void;
|
|
64
|
+
get isDisabled(): boolean;
|
|
61
65
|
get level(): number;
|
|
62
66
|
set level(v: number);
|
|
63
67
|
get cooldownRemaining(): number;
|
|
64
68
|
set cooldownRemaining(cooldownRemaining: number);
|
|
65
69
|
interruptCast(): void;
|
|
70
|
+
protected onDestroy(): HandleDestructor;
|
|
66
71
|
static get onCreate(): Event<[UnitAbility]>;
|
|
67
72
|
static get onDestroy(): Event<[UnitAbility]>;
|
|
68
73
|
}
|
|
@@ -89,6 +94,7 @@ export declare class ItemAbility extends Ability {
|
|
|
89
94
|
get cooldownRemaining(): number;
|
|
90
95
|
set cooldownRemaining(cooldownRemaining: number);
|
|
91
96
|
interruptCast(): void;
|
|
97
|
+
protected onDestroy(): HandleDestructor;
|
|
92
98
|
static get onCreate(): Event<[ItemAbility]>;
|
|
93
99
|
static get onDestroy(): Event<[ItemAbility]>;
|
|
94
100
|
}
|
|
@@ -38,6 +38,7 @@ local getHandleId = GetHandleId
|
|
|
38
38
|
local getItemBooleanField = BlzGetItemBooleanField
|
|
39
39
|
local setItemBooleanField = BlzSetItemBooleanField
|
|
40
40
|
local unitHideAbility = BlzUnitHideAbility
|
|
41
|
+
local unitDisableAbility = BlzUnitDisableAbility
|
|
41
42
|
local match = string.match
|
|
42
43
|
local ____type = _G.type
|
|
43
44
|
local ____tostring = _G.tostring
|
|
@@ -231,6 +232,19 @@ ____exports.getOrderIdByAbilityTypeId = function(abilityTypeId)
|
|
|
231
232
|
local parentTypeId = availableFields[abilityTypeId]
|
|
232
233
|
return order2orderId(orders[____type(parentTypeId) == "number" and parentTypeId or abilityTypeId] or "")
|
|
233
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
|
|
234
248
|
____exports.Ability = __TS__Class()
|
|
235
249
|
local Ability = ____exports.Ability
|
|
236
250
|
Ability.name = "Ability"
|
|
@@ -246,15 +260,7 @@ function Ability.prototype.getSnapshot(self)
|
|
|
246
260
|
return nil
|
|
247
261
|
end
|
|
248
262
|
function Ability.prototype.hasField(self, field)
|
|
249
|
-
|
|
250
|
-
if commonFields[field] then
|
|
251
|
-
return true
|
|
252
|
-
end
|
|
253
|
-
local id = availableFields[self.typeId]
|
|
254
|
-
if ____type(id) == "number" then
|
|
255
|
-
id = availableFields[id]
|
|
256
|
-
end
|
|
257
|
-
return not not (id and id[field])
|
|
263
|
+
return ____exports.abilityTypeHasField(self.typeId, field)
|
|
258
264
|
end
|
|
259
265
|
function Ability.prototype.getField(self, field, level)
|
|
260
266
|
local fieldType = match(
|
|
@@ -402,9 +408,37 @@ end
|
|
|
402
408
|
function UnitAbility.prototype.decrementHideCounter(self)
|
|
403
409
|
unitHideAbility(self.u, self.typeId, false)
|
|
404
410
|
end
|
|
411
|
+
function UnitAbility.prototype.incrementDisableCounter(self)
|
|
412
|
+
local unit = self.u
|
|
413
|
+
local typeId = self.typeId
|
|
414
|
+
unitHideAbility(unit, typeId, true)
|
|
415
|
+
unitDisableAbility(unit, typeId, true, false)
|
|
416
|
+
self.d = (self.d or 0) + 1
|
|
417
|
+
end
|
|
418
|
+
function UnitAbility.prototype.decrementDisableCounter(self)
|
|
419
|
+
local unit = self.u
|
|
420
|
+
local typeId = self.typeId
|
|
421
|
+
unitDisableAbility(unit, typeId, false, false)
|
|
422
|
+
unitHideAbility(unit, typeId, true)
|
|
423
|
+
self.d = (self.d or 0) - 1
|
|
424
|
+
end
|
|
405
425
|
function UnitAbility.prototype.interruptCast(self)
|
|
406
426
|
self.owner:interruptCast(self.typeId)
|
|
407
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
|
|
434
|
+
__TS__SetDescriptor(
|
|
435
|
+
UnitAbility.prototype,
|
|
436
|
+
"isDisabled",
|
|
437
|
+
{get = function(self)
|
|
438
|
+
return self.d ~= nil and self.d > 0
|
|
439
|
+
end},
|
|
440
|
+
true
|
|
441
|
+
)
|
|
408
442
|
__TS__SetDescriptor(
|
|
409
443
|
UnitAbility.prototype,
|
|
410
444
|
"level",
|
|
@@ -489,6 +523,12 @@ function ItemAbility.prototype.interruptCast(self)
|
|
|
489
523
|
setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, true)
|
|
490
524
|
end
|
|
491
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
|
|
492
532
|
__TS__SetDescriptor(
|
|
493
533
|
ItemAbility.prototype,
|
|
494
534
|
"level",
|