warscript 0.0.1-dev.ffaa090 → 0.0.1-dev.fff719b
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/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- 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.d.ts +17 -25
- package/core/types/sound.lua +85 -44
- 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 +6 -2
- package/engine/behaviour/ability.lua +16 -22
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +39 -3
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +21 -8
- package/engine/buff.lua +193 -121
- 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/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- 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/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/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 +52 -14
- package/engine/internal/unit.d.ts +39 -26
- package/engine/internal/unit.lua +375 -236
- 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 +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- 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/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -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/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -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/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.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/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +11 -11
- package/engine/object-data/entry/ability-type.lua +35 -13
- 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/sound-preset.d.ts +17 -0
- package/engine/object-data/entry/sound-preset.lua +104 -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 +25 -6
- package/engine/object-field.lua +357 -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 +12 -0
- package/engine/standard/fields/unit.lua +20 -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 +5 -0
- package/engine/unit.lua +5 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/package.json +2 -2
- package/patch-lua.lua +9 -0
- 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-map.d.ts +26 -0
- package/utility/linked-map.lua +66 -0
- package/utility/linked-set.d.ts +2 -0
- package/utility/linked-set.lua +26 -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/records.lua +20 -1
- 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
|
|
@@ -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)
|
|
@@ -304,7 +313,8 @@ buffHealingIntervalTimerCallback = function(buff)
|
|
|
304
313
|
source:healTarget(buff[101], healingPerInterval)
|
|
305
314
|
end
|
|
306
315
|
end
|
|
307
|
-
local
|
|
316
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
317
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
308
318
|
____exports.Buff = __TS__Class()
|
|
309
319
|
local Buff = ____exports.Buff
|
|
310
320
|
Buff.name = "Buff"
|
|
@@ -319,33 +329,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
319
329
|
local polarity
|
|
320
330
|
local resistanceType
|
|
321
331
|
local ability
|
|
332
|
+
local abilityBehavior
|
|
322
333
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
323
334
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
324
335
|
polarity = resistanceTypeOrPolarity
|
|
325
336
|
resistanceType = abilityOrParametersOrResistanceType
|
|
326
|
-
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
|
|
327
341
|
ability = parametersOrAbility
|
|
328
|
-
|
|
329
|
-
ability = nil
|
|
342
|
+
elseif parametersOrAbility ~= nil then
|
|
330
343
|
parameters = parametersOrAbility
|
|
331
344
|
end
|
|
332
345
|
else
|
|
333
346
|
typeId = typeIdOrTypeIds
|
|
334
347
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
335
348
|
resistanceType = resistanceTypeOrPolarity
|
|
336
|
-
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
|
|
337
354
|
ability = abilityOrParametersOrResistanceType
|
|
338
355
|
parameters = parametersOrAbility
|
|
339
|
-
|
|
340
|
-
ability = nil
|
|
356
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
341
357
|
parameters = abilityOrParametersOrResistanceType
|
|
358
|
+
else
|
|
359
|
+
parameters = parametersOrAbility
|
|
342
360
|
end
|
|
343
361
|
end
|
|
362
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
344
363
|
self.typeId = typeId
|
|
345
|
-
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
346
|
-
parameters = ability
|
|
347
|
-
ability = nil
|
|
348
|
-
end
|
|
349
364
|
local defaultParameters = self.constructor.defaultParameters
|
|
350
365
|
local level = parameters and parameters.level or defaultParameters.level
|
|
351
366
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -456,24 +471,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
456
471
|
abilityTypeIds = {}
|
|
457
472
|
self._abilityTypeIds = abilityTypeIds
|
|
458
473
|
end
|
|
459
|
-
for
|
|
474
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
475
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
460
476
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
461
477
|
if addedAbility ~= nil then
|
|
462
478
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
463
479
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
473
|
-
)
|
|
474
|
-
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
|
+
)
|
|
475
488
|
end
|
|
476
|
-
abilityTypeIds[
|
|
489
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
477
490
|
end
|
|
478
491
|
end
|
|
479
492
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -485,18 +498,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
485
498
|
self._behaviors = behaviors
|
|
486
499
|
end
|
|
487
500
|
end
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
if
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
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
|
|
495
510
|
end
|
|
496
511
|
end
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
512
|
+
if (next(additionalParameters)) ~= nil then
|
|
513
|
+
self.parameters = additionalParameters
|
|
514
|
+
end
|
|
500
515
|
end
|
|
501
516
|
end
|
|
502
517
|
if duration ~= nil and duration > 0 then
|
|
@@ -506,64 +521,68 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
506
521
|
end
|
|
507
522
|
self:onCreate()
|
|
508
523
|
self[100] = 1
|
|
524
|
+
Event.invoke(buffCreatedEvent, self)
|
|
509
525
|
end
|
|
510
|
-
function Buff.prototype.
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
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
|
|
514
533
|
end
|
|
515
|
-
function Buff.prototype.
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
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
|
|
520
540
|
end
|
|
521
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
522
541
|
end
|
|
523
542
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
524
543
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
525
544
|
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
526
545
|
else
|
|
527
546
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
528
|
-
local
|
|
529
|
-
local
|
|
530
|
-
local
|
|
547
|
+
local ____Effect_40 = Effect
|
|
548
|
+
local ____Effect_flash_41 = Effect.flash
|
|
549
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
531
550
|
self[105],
|
|
532
551
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
533
552
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
534
553
|
)
|
|
535
|
-
local
|
|
554
|
+
local ____isWidgetProvided_38
|
|
536
555
|
if isWidgetProvided then
|
|
537
|
-
|
|
556
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
538
557
|
else
|
|
539
|
-
|
|
558
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
540
559
|
end
|
|
541
|
-
__TS__SparseArrayPush(
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
__TS__SparseArraySpread(
|
|
560
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
561
|
+
____Effect_flash_41(
|
|
562
|
+
____Effect_40,
|
|
563
|
+
__TS__SparseArraySpread(____array_39)
|
|
545
564
|
)
|
|
546
565
|
end
|
|
547
566
|
end
|
|
548
567
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
549
568
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
550
|
-
local
|
|
551
|
-
local
|
|
552
|
-
local
|
|
569
|
+
local ____Effect_44 = Effect
|
|
570
|
+
local ____Effect_flash_45 = Effect.flash
|
|
571
|
+
local ____array_43 = __TS__SparseArrayNew(
|
|
553
572
|
self[106],
|
|
554
573
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
555
574
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
556
575
|
)
|
|
557
|
-
local
|
|
576
|
+
local ____isWidgetProvided_42
|
|
558
577
|
if isWidgetProvided then
|
|
559
|
-
|
|
578
|
+
____isWidgetProvided_42 = duration
|
|
560
579
|
else
|
|
561
|
-
|
|
580
|
+
____isWidgetProvided_42 = widgetOrDuration
|
|
562
581
|
end
|
|
563
|
-
__TS__SparseArrayPush(
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
__TS__SparseArraySpread(
|
|
582
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
583
|
+
____Effect_flash_45(
|
|
584
|
+
____Effect_44,
|
|
585
|
+
__TS__SparseArraySpread(____array_43)
|
|
567
586
|
)
|
|
568
587
|
end
|
|
569
588
|
function Buff.prototype.onCreate(self)
|
|
@@ -594,26 +613,33 @@ function Buff.prototype.onDestroy(self)
|
|
|
594
613
|
behavior:destroy()
|
|
595
614
|
end
|
|
596
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
|
|
622
|
+
if self[139] then
|
|
623
|
+
unit:decrementInvulnerabilityCounter()
|
|
624
|
+
end
|
|
597
625
|
if self[138] then
|
|
598
626
|
unit:decrementDisableAutoAttackCounter()
|
|
599
627
|
end
|
|
600
628
|
if self[136] then
|
|
601
629
|
if self[137] then
|
|
602
|
-
unit:
|
|
630
|
+
unit:decrementForceStunCounter()
|
|
603
631
|
end
|
|
604
632
|
unit:decrementStunCounter()
|
|
605
633
|
end
|
|
634
|
+
if self[135] then
|
|
635
|
+
unit:decrementGhostCounter()
|
|
636
|
+
end
|
|
606
637
|
if self._abilityTypeIds ~= nil then
|
|
607
|
-
for abilityTypeId in
|
|
638
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
608
639
|
unit:removeAbility(abilityTypeId)
|
|
609
640
|
end
|
|
610
641
|
end
|
|
611
|
-
|
|
612
|
-
for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
|
|
613
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
614
|
-
end
|
|
615
|
-
end
|
|
616
|
-
Event.invoke(buffDestroyEvent, self)
|
|
642
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
617
643
|
self[100] = 3
|
|
618
644
|
return UnitBehavior.prototype.onDestroy(self)
|
|
619
645
|
end
|
|
@@ -642,8 +668,8 @@ function Buff.apply(self, ...)
|
|
|
642
668
|
end
|
|
643
669
|
end
|
|
644
670
|
function Buff.getByTypeId(self, unit, typeId)
|
|
645
|
-
local
|
|
646
|
-
local buff =
|
|
671
|
+
local ____opt_46 = buffByTypeIdByUnit[unit]
|
|
672
|
+
local buff = ____opt_46 and ____opt_46[typeId]
|
|
647
673
|
if __TS__InstanceOf(buff, self) then
|
|
648
674
|
return buff
|
|
649
675
|
end
|
|
@@ -801,8 +827,8 @@ __TS__SetDescriptor(
|
|
|
801
827
|
return
|
|
802
828
|
end
|
|
803
829
|
self[112] = damageInterval
|
|
804
|
-
local
|
|
805
|
-
local elapsed =
|
|
830
|
+
local ____opt_48 = self._timer
|
|
831
|
+
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
806
832
|
local timer = self[114]
|
|
807
833
|
if timer == nil then
|
|
808
834
|
timer = Timer:create()
|
|
@@ -881,8 +907,8 @@ __TS__SetDescriptor(
|
|
|
881
907
|
return
|
|
882
908
|
end
|
|
883
909
|
self[117] = healingInterval
|
|
884
|
-
local
|
|
885
|
-
local elapsed =
|
|
910
|
+
local ____opt_50 = self._timer
|
|
911
|
+
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
886
912
|
local timer = self[119]
|
|
887
913
|
if timer == nil then
|
|
888
914
|
timer = Timer:create()
|
|
@@ -968,11 +994,11 @@ __TS__SetDescriptor(
|
|
|
968
994
|
"turnsIntoGhost",
|
|
969
995
|
{
|
|
970
996
|
get = function(self)
|
|
971
|
-
local
|
|
972
|
-
if
|
|
973
|
-
|
|
997
|
+
local ____self__135_52 = self[135]
|
|
998
|
+
if ____self__135_52 == nil then
|
|
999
|
+
____self__135_52 = false
|
|
974
1000
|
end
|
|
975
|
-
return
|
|
1001
|
+
return ____self__135_52
|
|
976
1002
|
end,
|
|
977
1003
|
set = function(self, turnsIntoGhost)
|
|
978
1004
|
if not turnsIntoGhost and self[135] then
|
|
@@ -991,22 +1017,22 @@ __TS__SetDescriptor(
|
|
|
991
1017
|
"stuns",
|
|
992
1018
|
{
|
|
993
1019
|
get = function(self)
|
|
994
|
-
local
|
|
995
|
-
if
|
|
996
|
-
|
|
1020
|
+
local ____self__136_53 = self[136]
|
|
1021
|
+
if ____self__136_53 == nil then
|
|
1022
|
+
____self__136_53 = false
|
|
997
1023
|
end
|
|
998
|
-
return
|
|
1024
|
+
return ____self__136_53
|
|
999
1025
|
end,
|
|
1000
1026
|
set = function(self, stuns)
|
|
1001
1027
|
if not stuns and self[136] then
|
|
1002
1028
|
if self[137] then
|
|
1003
|
-
self.object:
|
|
1029
|
+
self.object:decrementForceStunCounter()
|
|
1004
1030
|
end
|
|
1005
1031
|
self.object:decrementStunCounter()
|
|
1006
1032
|
self[136] = nil
|
|
1007
1033
|
elseif stuns and not self[136] then
|
|
1008
1034
|
if self[137] then
|
|
1009
|
-
self.object:
|
|
1035
|
+
self.object:incrementForceStunCounter()
|
|
1010
1036
|
end
|
|
1011
1037
|
self.object:incrementStunCounter()
|
|
1012
1038
|
self[136] = true
|
|
@@ -1020,21 +1046,21 @@ __TS__SetDescriptor(
|
|
|
1020
1046
|
"ignoresStunImmunity",
|
|
1021
1047
|
{
|
|
1022
1048
|
get = function(self)
|
|
1023
|
-
local
|
|
1024
|
-
if
|
|
1025
|
-
|
|
1049
|
+
local ____self__137_54 = self[137]
|
|
1050
|
+
if ____self__137_54 == nil then
|
|
1051
|
+
____self__137_54 = false
|
|
1026
1052
|
end
|
|
1027
|
-
return
|
|
1053
|
+
return ____self__137_54
|
|
1028
1054
|
end,
|
|
1029
1055
|
set = function(self, ignoresStunImmunity)
|
|
1030
1056
|
if not ignoresStunImmunity and self[137] then
|
|
1031
1057
|
if self[136] then
|
|
1032
|
-
self.object:
|
|
1058
|
+
self.object:decrementForceStunCounter()
|
|
1033
1059
|
end
|
|
1034
1060
|
self[137] = nil
|
|
1035
1061
|
elseif ignoresStunImmunity and not self[137] then
|
|
1036
1062
|
if self[136] then
|
|
1037
|
-
self.object:
|
|
1063
|
+
self.object:incrementForceStunCounter()
|
|
1038
1064
|
end
|
|
1039
1065
|
self[137] = true
|
|
1040
1066
|
end
|
|
@@ -1047,11 +1073,11 @@ __TS__SetDescriptor(
|
|
|
1047
1073
|
"disablesAutoAttack",
|
|
1048
1074
|
{
|
|
1049
1075
|
get = function(self)
|
|
1050
|
-
local
|
|
1051
|
-
if
|
|
1052
|
-
|
|
1076
|
+
local ____self__138_55 = self[138]
|
|
1077
|
+
if ____self__138_55 == nil then
|
|
1078
|
+
____self__138_55 = false
|
|
1053
1079
|
end
|
|
1054
|
-
return
|
|
1080
|
+
return ____self__138_55
|
|
1055
1081
|
end,
|
|
1056
1082
|
set = function(self, disablesAutoAttack)
|
|
1057
1083
|
if not disablesAutoAttack and self[138] then
|
|
@@ -1070,11 +1096,11 @@ __TS__SetDescriptor(
|
|
|
1070
1096
|
"providesInvulnerability",
|
|
1071
1097
|
{
|
|
1072
1098
|
get = function(self)
|
|
1073
|
-
local
|
|
1074
|
-
if
|
|
1075
|
-
|
|
1099
|
+
local ____self__139_56 = self[139]
|
|
1100
|
+
if ____self__139_56 == nil then
|
|
1101
|
+
____self__139_56 = false
|
|
1076
1102
|
end
|
|
1077
|
-
return
|
|
1103
|
+
return ____self__139_56
|
|
1078
1104
|
end,
|
|
1079
1105
|
set = function(self, providesInvulnerability)
|
|
1080
1106
|
if not providesInvulnerability and self[139] then
|
|
@@ -1093,11 +1119,11 @@ __TS__SetDescriptor(
|
|
|
1093
1119
|
"killsOnExpiration",
|
|
1094
1120
|
{
|
|
1095
1121
|
get = function(self)
|
|
1096
|
-
local
|
|
1097
|
-
if
|
|
1098
|
-
|
|
1122
|
+
local ____self__140_57 = self[140]
|
|
1123
|
+
if ____self__140_57 == nil then
|
|
1124
|
+
____self__140_57 = false
|
|
1099
1125
|
end
|
|
1100
|
-
return
|
|
1126
|
+
return ____self__140_57
|
|
1101
1127
|
end,
|
|
1102
1128
|
set = function(self, killsOnExpiration)
|
|
1103
1129
|
if not killsOnExpiration and self[140] then
|
|
@@ -1114,11 +1140,11 @@ __TS__SetDescriptor(
|
|
|
1114
1140
|
"explodesOnExpiration",
|
|
1115
1141
|
{
|
|
1116
1142
|
get = function(self)
|
|
1117
|
-
local
|
|
1118
|
-
if
|
|
1119
|
-
|
|
1143
|
+
local ____self__141_58 = self[141]
|
|
1144
|
+
if ____self__141_58 == nil then
|
|
1145
|
+
____self__141_58 = false
|
|
1120
1146
|
end
|
|
1121
|
-
return
|
|
1147
|
+
return ____self__141_58
|
|
1122
1148
|
end,
|
|
1123
1149
|
set = function(self, killsOnExpiration)
|
|
1124
1150
|
if not killsOnExpiration and self[141] then
|
|
@@ -1233,6 +1259,19 @@ __TS__SetDescriptor(
|
|
|
1233
1259
|
},
|
|
1234
1260
|
true
|
|
1235
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
|
+
)
|
|
1236
1275
|
__TS__SetDescriptor(
|
|
1237
1276
|
Buff.prototype,
|
|
1238
1277
|
"duration",
|
|
@@ -1246,13 +1285,13 @@ __TS__SetDescriptor(
|
|
|
1246
1285
|
"remainingDuration",
|
|
1247
1286
|
{
|
|
1248
1287
|
get = function(self)
|
|
1249
|
-
local
|
|
1250
|
-
return
|
|
1288
|
+
local ____opt_59 = self._timer
|
|
1289
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1251
1290
|
end,
|
|
1252
1291
|
set = function(self, remainingDuration)
|
|
1253
|
-
local
|
|
1254
|
-
local
|
|
1255
|
-
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)
|
|
1256
1295
|
if remainingDurationDelta ~= 0 then
|
|
1257
1296
|
self[103] = self[103] + remainingDurationDelta
|
|
1258
1297
|
if remainingDuration <= 0 then
|
|
@@ -1282,7 +1321,34 @@ __TS__SetDescriptor(
|
|
|
1282
1321
|
},
|
|
1283
1322
|
true
|
|
1284
1323
|
)
|
|
1285
|
-
|
|
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
|
+
)
|
|
1350
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1351
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1286
1352
|
(function(self)
|
|
1287
1353
|
local function destroyBuffIfNeeded(buff)
|
|
1288
1354
|
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
@@ -1336,5 +1402,11 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1336
1402
|
____exports.checkBuffs(target)
|
|
1337
1403
|
end
|
|
1338
1404
|
)
|
|
1405
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1406
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1407
|
+
end)
|
|
1408
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1409
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1410
|
+
end)
|
|
1339
1411
|
end)(Buff)
|
|
1340
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";
|
|
@@ -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
|
}
|